ID: 41090 Updated by: [EMAIL PROTECTED] Reported By: ozone at cname dot com -Status: Open +Status: Closed Bug Type: Documentation problem Operating System: linux PHP Version: 5.2.1 -Assigned To: +Assigned To: colder New Comment:
This bug has been fixed in the documentation's XML sources. Since the online and downloadable versions of the documentation need some time to get updated, we would like to ask you to be a bit patient. Thank you for the report, and for helping us make our documentation better. As an example. Previous Comments: ------------------------------------------------------------------------ [2007-04-15 19:20:47] ozone at cname dot com This still needs better documentation; the (silent) inability to override a private method in a derivative class is somewhat counterintuitive. Put another way, I had to burn time writing test cases after a careful study of the documentation didn't mention the behavior I saw. IMNSHO, a production-quality language doesn't require careful "figuring out" of its behaviors, and if I'm repeatedly told that the issues I experience are "not a bug" , I'll stop wasting the time to file bug reports. ------------------------------------------------------------------------ [2007-04-15 09:04:18] [EMAIL PROTECTED] Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Calling scope matters ------------------------------------------------------------------------ [2007-04-15 01:12:20] ozone at cname dot com Description: ------------ The page on Visibility states: "Private limits visibility only to the class that defines the item." Apparently, private methods may not be superseded by a child of that class; in the following code, a new object e inherits the __constructor() which calls "$this->df", but because f() is declared private, it is silently not overridden. This behavior may not constitute a "bug" in the context of PHP inheritance, but it deserves a warning message and/or some mention in the documentation. Note that if f() is declared protected (or public) in both classes, inheritance works as expected; if the two f()s are declared with differing protection, an error message results, which is somewhat ironic considering the above-described silent failure mode. Reproduce code: --------------- class d { function __construct() { $this->f(); } private function f() { echo "d->f()\n"; } } class e extends d { private function f() { echo "e->f()\n"; } } $t = new e(); Expected result: ---------------- e->f() (Because $this refers to an instance of e when it is executed.) Actual result: -------------- d->f() ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=41090&edit=1