Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:49963 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 32182 invoked from network); 24 Oct 2010 22:38:31 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 24 Oct 2010 22:38:31 -0000 Authentication-Results: pb1.pair.com header.from=giovanni@giacobbi.net; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=giovanni@giacobbi.net; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain giacobbi.net from 95.110.130.42 cause and error) X-PHP-List-Original-Sender: giovanni@giacobbi.net X-Host-Fingerprint: 95.110.130.42 gerbil.thgnet.it Linux 2.5 (sometimes 2.4) (4) Received: from [95.110.130.42] ([95.110.130.42:42947] helo=gerbil.thgnet.it) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 7E/56-17247-565B4CC4 for ; Sun, 24 Oct 2010 18:38:30 -0400 Received: from johnny by gerbil.thgnet.it with local (Exim 4.69) (envelope-from ) id 1PA9Cr-0001zG-NN for internals@lists.php.net; Mon, 25 Oct 2010 00:38:25 +0200 Date: Mon, 25 Oct 2010 00:38:25 +0200 To: internals@lists.php.net Message-ID: <20101024223825.GC19835@gerbil.thgnet.it> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.2i Subject: BC break in 5.3.2 -> 5.3.3 with "parent::" and __call/__callStatic From: giovanni@giacobbi.net (Giovanni Giacobbi) Greetings, in reference to bug #52713 i'd like to inquire you about this decision which actually broke my codebase in different parts. The situation is this one: class ActiveRecord { public function __call($method, $args) { if ($method == "getFoo") { // implement some default behaviour for getFoo() } } public function __callStatic($method, $args) { // do some other stuff } } class Bar { // override getFoo() to add some specific behaviour public function getFoo() { // do the specific stuff parent::getFoo(); } } Until version 5.3.2 this worked fine, starting from version 5.3.3 parent::getFoo() calls __callStatic() instead of __call(). This is a really bad BC change which i thought you decided to accept only in minor versions change and not patch-level versions change. Anyway, I would even be willing to do some changes to my codebase, but what is the solution? I can't see any other way to do this with the obvious assumptions that my design is good and that I don't know anything about the parent class except there is a getFoo() method implemented somehow. My wish is that you restore the 5.3.2 behaviour, which sounds very reasonable, and maybe introduce another way when you actually want to get rid of the context, something like static:: -- Giovanni Giacobbi