Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:42518 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 88552 invoked from network); 6 Jan 2009 22:18:30 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 6 Jan 2009 22:18:30 -0000 Authentication-Results: pb1.pair.com smtp.mail=andrei@gravitonic.com; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=andrei@gravitonic.com; sender-id=unknown Received-SPF: error (pb1.pair.com: domain gravitonic.com from 72.14.204.226 cause and error) X-PHP-List-Original-Sender: andrei@gravitonic.com X-Host-Fingerprint: 72.14.204.226 qb-out-0506.google.com Received: from [72.14.204.226] ([72.14.204.226:23307] helo=qb-out-0506.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id E8/25-07052-4B8D3694 for ; Tue, 06 Jan 2009 17:18:29 -0500 Received: by qb-out-0506.google.com with SMTP id d8so3068624qbc.23 for ; Tue, 06 Jan 2009 14:18:26 -0800 (PST) Received: by 10.142.237.20 with SMTP id k20mr9339063wfh.218.1231280305023; Tue, 06 Jan 2009 14:18:25 -0800 (PST) Received: from barley.local (64-71-7-198.static.wiline.com [64.71.7.198]) by mx.google.com with ESMTPS id 30sm51091530wfa.41.2009.01.06.14.18.23 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 06 Jan 2009 14:18:24 -0800 (PST) Message-ID: <4963D8AD.5090502@gravitonic.com> Date: Tue, 06 Jan 2009 14:18:21 -0800 User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070807) MIME-Version: 1.0 To: PHP internals Content-Type: multipart/mixed; boundary="------------010703020100040408070201" Subject: Private member/method access inconsistency From: andrei@gravitonic.com (Andrei Zmievski) --------------010703020100040408070201 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit A colleague at Digg pointed me to this blog entry: http://atomized.org/2008/11/more-tough-love-from-php/ To me it looks like a large inconsistency in the way we invoke overloaded handlers for members vs. methods. I am not sure how it came to be this way, but it's probably something we should fix. We can either remove the call to __get() on private member access, or add call to __call() on private method invocation. The former approach presents more of a BC problem IMHO, so I am advocating the latter. I've attached a simple patch for consideration. -Andrei --------------010703020100040408070201 Content-Type: text/plain; x-mac-type="0"; x-mac-creator="0"; name="zend_priv_method_call.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="zend_priv_method_call.patch" SW5kZXg6IFplbmQvemVuZF9vYmplY3RfaGFuZGxlcnMuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvcmVwb3NpdG9yeS9aZW5kRW5naW5lMi96ZW5kX29iamVjdF9oYW5kbGVycy5jLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjEzNS4yLjYuMi4zMApkaWZmIC11IC1yMS4xMzUuMi42 LjIuMzAgemVuZF9vYmplY3RfaGFuZGxlcnMuYwotLS0gWmVuZC96ZW5kX29iamVjdF9oYW5k bGVycy5jCTMxIERlYyAyMDA4IDExOjE3OjMzIC0wMDAwCTEuMTM1LjIuNi4yLjMwCisrKyBa ZW5kL3plbmRfb2JqZWN0X2hhbmRsZXJzLmMJNiBKYW4gMjAwOSAyMjowNzozOCAtMDAwMApA QCAtNzk5LDEwICs3OTksMjcgQEAKIAkJLyogRW5zdXJlIHRoYXQgaWYgd2UncmUgY2FsbGlu ZyBhIHByaXZhdGUgZnVuY3Rpb24sIHdlJ3JlIGFsbG93ZWQgdG8gZG8gc28uCiAJCSAqLwog CQl1cGRhdGVkX2ZiYyA9IHplbmRfY2hlY2tfcHJpdmF0ZV9pbnQoZmJjLCBaX09CSl9IQU5E TEVSX1Aob2JqZWN0LCBnZXRfY2xhc3NfZW50cnkpKG9iamVjdCBUU1JNTFNfQ0MpLCBsY19t ZXRob2RfbmFtZSwgbWV0aG9kX2xlbiBUU1JNTFNfQ0MpOwotCQlpZiAoIXVwZGF0ZWRfZmJj KSB7Ci0JCQl6ZW5kX2Vycm9yKEVfRVJST1IsICJDYWxsIHRvICVzIG1ldGhvZCAlczo6JXMo KSBmcm9tIGNvbnRleHQgJyVzJyIsIHplbmRfdmlzaWJpbGl0eV9zdHJpbmcoZmJjLT5jb21t b24uZm5fZmxhZ3MpLCBaRU5EX0ZOX1NDT1BFX05BTUUoZmJjKSwgbWV0aG9kX25hbWUsIEVH KHNjb3BlKSA/IEVHKHNjb3BlKS0+bmFtZSA6ICIiKTsKKwkJaWYgKHVwZGF0ZWRfZmJjKSB7 CisJCQlmYmMgPSB1cGRhdGVkX2ZiYzsKKwkJfSBlbHNlIHsKKwkJCWlmICh6b2JqLT5jZS0+ X19jYWxsKSB7CisJCQkJemVuZF9pbnRlcm5hbF9mdW5jdGlvbiAqY2FsbF91c2VyX2NhbGwg PSBlbWFsbG9jKHNpemVvZih6ZW5kX2ludGVybmFsX2Z1bmN0aW9uKSk7CisJCQkJY2FsbF91 c2VyX2NhbGwtPnR5cGUgPSBaRU5EX0lOVEVSTkFMX0ZVTkNUSU9OOworCQkJCWNhbGxfdXNl cl9jYWxsLT5tb2R1bGUgPSB6b2JqLT5jZS0+bW9kdWxlOworCQkJCWNhbGxfdXNlcl9jYWxs LT5oYW5kbGVyID0gemVuZF9zdGRfY2FsbF91c2VyX2NhbGw7CisJCQkJY2FsbF91c2VyX2Nh bGwtPmFyZ19pbmZvID0gTlVMTDsKKwkJCQljYWxsX3VzZXJfY2FsbC0+bnVtX2FyZ3MgPSAw OworCQkJCWNhbGxfdXNlcl9jYWxsLT5zY29wZSA9IHpvYmotPmNlOworCQkJCWNhbGxfdXNl cl9jYWxsLT5mbl9mbGFncyA9IDA7CisJCQkJY2FsbF91c2VyX2NhbGwtPmZ1bmN0aW9uX25h bWUgPSBlc3RybmR1cChtZXRob2RfbmFtZSwgbWV0aG9kX2xlbik7CisJCQkJY2FsbF91c2Vy X2NhbGwtPnBhc3NfcmVzdF9ieV9yZWZlcmVuY2UgPSAwOworCQkJCWNhbGxfdXNlcl9jYWxs LT5yZXR1cm5fcmVmZXJlbmNlID0gWkVORF9SRVRVUk5fVkFMVUU7CisKKwkJCQlmYmMgPSAo emVuZF9mdW5jdGlvbiAqKWNhbGxfdXNlcl9jYWxsOworCQkJfSBlbHNlIHsKKwkJCQl6ZW5k X2Vycm9yKEVfRVJST1IsICJDYWxsIHRvICVzIG1ldGhvZCAlczo6JXMoKSBmcm9tIGNvbnRl eHQgJyVzJyIsIHplbmRfdmlzaWJpbGl0eV9zdHJpbmcoZmJjLT5jb21tb24uZm5fZmxhZ3Mp LCBaRU5EX0ZOX1NDT1BFX05BTUUoZmJjKSwgbWV0aG9kX25hbWUsIEVHKHNjb3BlKSA/IEVH KHNjb3BlKS0+bmFtZSA6ICIiKTsKKwkJCX0KIAkJfQotCQlmYmMgPSB1cGRhdGVkX2ZiYzsK IAl9IGVsc2UgewogCQkvKiBFbnN1cmUgdGhhdCB3ZSBoYXZlbid0IG92ZXJyaWRkZW4gYSBw cml2YXRlIGZ1bmN0aW9uIGFuZCBlbmQgdXAgY2FsbGluZwogCQkgKiB0aGUgb3ZlcnJpZGlu ZyBwdWJsaWMgZnVuY3Rpb24uLi4K --------------010703020100040408070201--