rfc:namespaces
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
rfc:namespaces [2008/09/15 23:25] – tweak jochem | rfc:namespaces [2017/09/22 13:28] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 108: | Line 108: | ||
< | < | ||
defined(' | defined(' | ||
- | defined(' | + | defined(' |
defined(' | defined(' | ||
defined(' | defined(' | ||
Line 489: | Line 489: | ||
//There is a need to disambiguate these two calls, and to be able to call both regardless of the existence of the other.// | //There is a need to disambiguate these two calls, and to be able to call both regardless of the existence of the other.// | ||
- | | + | |
- | ------ | + | ---- |
==== 7. Class constants v. constants ambiguities ==== | ==== 7. Class constants v. constants ambiguities ==== | ||
+ | The same ambiguity that exists between static methods and namespaced functions also exists between class constants and namespaced constants. | ||
+ | From the users point of view it not possible to determine, with any easy or certainty, from the code whether **TEST:: | ||
+ | |||
+ | class.inc: | ||
+ | <code php> | ||
+ | <?php | ||
+ | class TEST { | ||
+ | const MY_CNST_ONE = 'TEST class CONSTANT ONE'; | ||
+ | const MY_CNST_TWO = 'TEST class CONSTANT TWO'; | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | ns.inc: | ||
+ | <code php> | ||
+ | <?php | ||
+ | namespace TEST; | ||
+ | const MY_CNST_ONE = 'TEST class CONSTANT ONE'; | ||
+ | ?> | ||
+ | |||
+ | example1.php: | ||
+ | <code php> | ||
+ | <?php | ||
+ | include ' | ||
+ | include ' | ||
+ | echo TEST:: | ||
+ | echo TEST:: | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | output of example1.php (regardless of include order): | ||
+ | < | ||
+ | TEST namespace CONSTANT ONE | ||
+ | TEST class CONSTANT TWO | ||
+ | </ | ||
+ | |||
+ | There is no way to reference the constant **MY_CNST_ONE** from class **TEST**, additionally because constant **MY_CNST_TWO** from class **TEST** is reachable one is left with the potential that the namespaced include will break current code if a constant **MY_CNST_TWO** is later defined in the TEST namespace, regardless it introduces confusion because one is it possible to retrieve constants from two different ' | ||
+ | //There is a need to disambiguate the constants, and to be able to reference both regardless of the existence of the other.// | ||
Line 720: | Line 758: | ||
> | > | ||
> If a fully qualified name is prefixed with function:: or const:: it will only check the namespace function/ | > If a fully qualified name is prefixed with function:: or const:: it will only check the namespace function/ | ||
- | + | > | |
- | ns_071.inc: | + | > ns_071.inc: |
- | <code php> | + | > <code php> |
<?php | <?php | ||
namespace foo; | namespace foo; | ||
Line 735: | Line 773: | ||
?> | ?> | ||
</ | </ | ||
- | ns_071.phpt: | + | > ns_071.phpt: |
- | <code php> | + | > <code php> |
--TEST-- | --TEST-- | ||
071: name conflict, function/ | 071: name conflict, function/ | ||
Line 777: | Line 815: | ||
This patch addresses the inability to include [html] output prior to the first **<? | This patch addresses the inability to include [html] output prior to the first **<? | ||
+ | To quote the author from his original post regarding this patch: | ||
+ | > This is a simple patch that allows files like this to work without parse error.: | ||
+ | > | ||
+ | > main.php: | ||
+ | > <code php> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | <?php | ||
+ | namespace my:: | ||
+ | |||
+ | // stuff | ||
+ | |||
+ | ?> | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
===== Miscellaneous ===== | ===== Miscellaneous ===== | ||
Line 819: | Line 876: | ||
* [[php-internals@119874502923978|Suggestion: | * [[php-internals@119874502923978|Suggestion: | ||
- | Nothing has been filtered on the basis of relevance! | + | //Nothing has been filtered on the basis of relevance |
rfc/namespaces.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1