rfc:protectedlookup
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Next revisionBoth sides next revision | ||
rfc:protectedlookup [2008/06/03 13:37] – fix typo in code sample robinf | rfc:protectedlookup [2008/06/03 13:52] – robinf | ||
---|---|---|---|
Line 218: | Line 218: | ||
* The protected modifier loses its intuitive/ | * The protected modifier loses its intuitive/ | ||
| | ||
+ | |||
==== Option 3 ==== | ==== Option 3 ==== | ||
This approach is similar to option 2, but modifies the new rule slightly so as to preserve the intuitive meaning of the protected modifier. Lookups of protected members on sibling classes fall back to the declaration from the common ancestor class, if available. To illustrate: | This approach is similar to option 2, but modifies the new rule slightly so as to preserve the intuitive meaning of the protected modifier. Lookups of protected members on sibling classes fall back to the declaration from the common ancestor class, if available. To illustrate: | ||
Line 249: | Line 250: | ||
=== Cons === | === Cons === | ||
* Non-trivial code change | * Non-trivial code change | ||
- | * Possibly confusing at first, as code that reads C1::f() may in fact result in an invocation of P::f(). | + | * Possibly confusing at first, as code that reads C1::f() may in fact result in an invocation of P:: |
+ | <code php> | ||
+ | <?php | ||
+ | // Class P declares some private members. | ||
+ | class P { | ||
+ | private function f() { echo ' | ||
+ | public static function test() { | ||
+ | $c = new C; | ||
+ | $c-> | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Class C1 re-declares the " | ||
+ | class C extends P { | ||
+ | private function f() { echo ' | ||
+ | } | ||
+ | |||
+ | P:: | ||
+ | ?> | ||
+ | </ | ||
+ | |||
rfc/protectedlookup.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1