ID: 44769 Updated by: [EMAIL PROTECTED] Reported By: todd at magnifisites dot com -Status: Assigned +Status: Closed Bug Type: Scripting Engine problem Operating System: * PHP Version: 5.2.5 Assigned To: felipe New Comment:
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Fixed in 5_3 and HEAD. Previous Comments: ------------------------------------------------------------------------ [2008-05-25 14:27:15] danielc at analysisandsolutions dot com Marcus feels this is a bug and should be addressed (http://news.php.net/php.internals/37857). Once this is fixed, the documentation bug should be updated (http://bugs.php.net/bug.php?id=43924). Here are earlier bug reports covering this issue... Documentation bugs that have been closed: http://bugs.php.net/bug.php?id=31806 http://bugs.php.net/bug.php?id=40103 Illia marked this bogus saying it is the expected behavior. http://bugs.php.net/bug.php?id=40056 ------------------------------------------------------------------------ [2008-04-17 23:15:57] todd at magnifisites dot com Description: ------------ When using object overloading I thought I might receive at the very least a warning error if I attempted to declare any of the magic methods as private in a class definition as per the documentation: "All overloading methods must be defined as public." http://php.net/language.oop5.overloading.php Also tested in PHP 6CVS-2008-04-17 (snap) Reproduce code: --------------- class MemberTest { /** Location for overloaded data. */ private $data = array(); private function __set($name, $value) { echo "Setting '$name' to '$value'\n"; $this->data[$name] = $value; } private function __get($name) { echo "Getting '$name'\n"; if (array_key_exists($name, $this->data)) { return $this->data[$name]; } } } echo "<pre>\n"; $obj = new MemberTest; $obj->a = 1; echo $obj->a . "\n"; exit; Expected result: ---------------- A FATAL error or at the very least a WARNING error with error_reporting = E_ALL | E_STRICT Actual result: -------------- <pre> Setting 'a' to '1' Getting 'a' 1 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=44769&edit=1