Edit report at https://bugs.php.net/bug.php?id=49625&edit=1

 ID:                 49625
 Comment by:         martijn at 51north dot nl
 Reported by:        jo at feuersee dot de
 Summary:            spl_autoload and case sensitivity
 Status:             Not a bug
 Type:               Bug
 Package:            SPL related
 Operating System:   Linux
 PHP Version:        5.3.0
 Block user comment: N
 Private report:     N

 New Comment:

There's a few things I'd like to add (actually a lot but it's probably best if 
I keep most of it to myself):

sjo...@php.net: "it will break scripts which depend on spl_autoload being case 
insensitive."
This suggest that right now spl_autoload is in fact case insensitive, which it 
is not. A case insensitive system should find Core.php when asking for 
Core.php, just like a case sensitive system would. The difference is that it 
would ALSO find core.php which would be fine by me. Now it fails to find 
Core.php making it case destructive at best.

wim at asgc dot be: "In addition I would strongly suggest the __autoload 
function will not be deprecated until this is fixed."
Thank god I love irony, however, this won't actually be a problem as you can 
still use custom auto loaders. All you need to do is register it using 
spl_autoload_register().

And finally, when using namespaces it is quite easy to get around this problem 
using a short autoloader function:

function SPL_autoload_suxx($class) {
    include \str_replace('\\', '/', $class) .'.php';
}
\spl_autoload_register(__NAMESPACE__ .'\SPL_autoload_suxx');

All you have to do is copy, paste and mop up the river that you've cried.


Previous Comments:
------------------------------------------------------------------------
[2013-03-22 17:45:26] abr28 at cam dot ac dot uk

Like so many others I also think this is a much too obvious bug, unexpected 
behaviour, etc ... you name it. It's a poor implementation that needs to be 
fixed even if it means breaking compatibility with PHP code that relyies on it, 
code + files which are poorly cased anyway (!).

However you can maintain compatibility by introducing a new function which 
alters a case sensitivity flag. Just like you already have 
spl_autoload_extensions() to hint/restrict the extensions for spl_autoload(), 
you can have a function spl_autoload_case() and call it once, e.g.:

spl_autoload_case(false); // for the broken lowercase spl_autoload()
spl_autoload_case(true);  // to respect case sensitivity

You'd call this before spl_autoload() gets called. You can even make the 
default to be lowercase, like you so insist on having.

This way you don't break compatibility -- although you should(too many aspects 
of PHP encourage bad coding already).

------------------------------------------------------------------------
[2013-03-19 12:49:14] james at jamestandy dot com

Also add my support to
FIX THIS BUG!!!

Just tried adding the Ebay Trading API to my existing site, which is using 
spl_autoload.

Because the ebay team (like it seems every other sensible dev on the entire 
planet) uses CamelCased filenames, I now have 3 choices:

1:  Do not use spl_autoload  (Not an option because this would break our 
existing site).

2:  Do not use the Ebay Trading API, or write my own implementation of this 
from scratch. (Also not an option for obvious reasons).

3: Rename over 1000 files, and replace every CamelCase instance in each and 
every file with lower case names.

3 is looking to be my only option, which of course would need repeating each 
and every time Ebay update their API, so is really NOT a viable option.

------------------------------------------------------------------------
[2013-01-30 09:41:30] jurchiks101 at gmail dot com

Bumping this bug, at least add a boolean parameter to it for case-sensitivity.
This should be literally a 5-minute job for the devs, why has nobody fixed it 
for 
3 years and counting? Have you no shame?

------------------------------------------------------------------------
[2013-01-09 10:00:35] wim at asgc dot be

Since I have an extensive codebase relying on classes defined with uppercase 
starting letter and I saw the 'tip' in the documentation (see below) , I wanted 
to switch. To my surprise I bumped into this issue with spl_autoload_register 
(needless to say that it works on a Windows box as a charm and breaks terribly 
on a Linux box).

It definitely is a bug which should be mentioned clearly in the documentation. 
In addition I would strongly suggest the __autoload function will not be 
deprecated until this is fixed.
--
>From the documentation :
Tip
spl_autoload_register() provides a more flexible alternative for autoloading 
classes. For this reason, using __autoload() is discouraged and may be 
deprecated or removed in the future.
--

------------------------------------------------------------------------
[2012-12-17 16:01:57] admin at tandyukservers dot co dot uk

Status:         Not a bug
Bullshit.
IS A BUG.

When will this be recognised as such by you php devs and added to the list of 
bugs to be fixed!

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=49625


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=49625&edit=1

Reply via email to