je le code php suivant:Namespace sous Windows Autoload fonctionne, mais pas sur Linux
index.php
<?php
spl_autoload_extensions(".php");
spl_autoload_register();
use modules\standard as std;
$handler = new std\handler();
$handler->delegate();
?>
modules \ Standard \ handler.php
<?php
namespace modules\standard {
class handler {
function delegate(){
echo 'Hello from delegation!';
}
}
}
?>
Sous Windows 7, en exécutant WAMP, le code produit le message "Bonjour de la délégation!" mais sous Linux, je reçois le texte suivant:
Fatal error: spl_autoload(): Class modules\standard\handler could not be loaded in /var/www/index.php on line 15
Windows est en cours d'exécution PHP 5.3.0 sous WAMP et Linux exécute le package 5.3.2 Dotdeb sous Ubuntu 9.10.
Est-ce un problème de configuration sur ma boîte Linux, ou tout simplement une différence dans la namespaces façon et autoloading est gérée sur les différents systèmes d'exploitation
Ce n'est pas le cas mais, spl_autoload-register() traduit le nom de la classe en minuscule, donc il se cassera sous Unix si vous utilisez des noms de camelCase (https://bugs.php.net/bug.php?id = 53065) –