rfc:case_insensitive_constant_deprecation
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionNext revisionBoth sides next revision | ||
rfc:case_insensitive_constant_deprecation [2018/06/24 11:00] – created nikic | rfc:case_insensitive_constant_deprecation [2018/06/24 12:18] – nikic | ||
---|---|---|---|
Line 4: | Line 4: | ||
* Target PHP version: PHP 7.3 | * Target PHP version: PHP 7.3 | ||
* Implementation: | * Implementation: | ||
- | * Status: | + | * Status: |
===== Introduction ===== | ===== Introduction ===== | ||
Line 12: | Line 12: | ||
The current state of the matter is: | The current state of the matter is: | ||
- | * Class constants are always case-insensitive. | + | * Class constants are always case-sensitive. |
* Global constants declared with '' | * Global constants declared with '' | ||
* Constants declared with '' | * Constants declared with '' | ||
Line 74: | Line 74: | ||
This is an issue that can in principle be resolved, however it would come with significant additional implementation complexity and a hit to performance and memory usage. At the least, it would require storing lower-cased variants of all constants and checking against them on new constant declarations. | This is an issue that can in principle be resolved, however it would come with significant additional implementation complexity and a hit to performance and memory usage. At the least, it would require storing lower-cased variants of all constants and checking against them on new constant declarations. | ||
- | ==== Implementation overhead ==== | + | ==== Implementation |
Support for case-insensitive constants makes the implementation more complex and slower. Constant lookups are implemented by first looking up the constant name directly, and then looking up a lowercased variant. | Support for case-insensitive constants makes the implementation more complex and slower. Constant lookups are implemented by first looking up the constant name directly, and then looking up a lowercased variant. | ||
- | A particularly extreme case are access to unqualified constants inside namespaces. For example, if constant '' | + | A particularly extreme case are access to unqualified constants inside namespaces. For example, if constant '' |
| | ||
===== Proposal ===== | ===== Proposal ===== | ||
Line 90: | Line 90: | ||
</ | </ | ||
- | The '' | + | The '' |
Declaration of case-insensitive constants by extensions will not generate a deprecation warning (though their access will). The reason behind this is that the end-user will not be able to do anything about this deprecation warning, while the extension maintainer may not be able to change the declaration for BC reasons at this point. | Declaration of case-insensitive constants by extensions will not generate a deprecation warning (though their access will). The reason behind this is that the end-user will not be able to do anything about this deprecation warning, while the extension maintainer may not be able to change the declaration for BC reasons at this point. |
rfc/case_insensitive_constant_deprecation.txt · Last modified: 2018/07/16 17:18 by nikic