Hi,

> De : yohg...@gmail.com [mailto:yohg...@gmail.com] De la part de Yasuo Ohgaki
>
> > I would like to propose that namespaces, functions, and classes become
> > case-sensitive (constants are already case-sensitive). Actually, I never
> > understood why they are case-insensitive. Even if the performance gain is
> > negligible, I think it could be the right time to question this.
> >
> 
> I'm writing this mail without reading current zend code.
> 
> Anyway, is it feasible to raise E_DEPRECATE without much performance
> penalty?
> For example,
> 
> if (!strcmp(name, name_to_be_searched)) {
>   do_something;
> } else if (!strcasecmp(name, name_to_be_searched) {
>   rase_error;
>   do_something;
> }
> 
> Duplicated codes may be removed by macro. strcasecmp() checks may be
> removed
> 10 years later or more.

Unfortunately, raising an E_DEPRECATED on case-sensitive mismatch is a huge 
work, as case-insensitivity appears in a lot of locations throughout the core. 
And the macro approach is not possible.

Actually, case insensitivity goes well beyond class and function names: it also 
includes namespaces, scope resolution operators (self, parent, static), class 
magic methods,  method names (properties are already case-sensitive), language 
keywords, and some stream wrapper protocols (like file and zlib). All these 
case insensitive comparisons are done in a variety of ways, at various 
locations in the code. Most store and compare names converted to lowercase 
(which implies a problem with Unicode as correct conversion with an unknown 
character set is impossible), some use strncasecmp...

So, making the code case-sensitive would be a important work, but raising an 
E_DEPRECATED message would require much more work. Unfortunately, you can 
forget the idea of a macro that can be removed anytime in the future :)

Cheers

François


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to