tengo el siguiente código PHP:carga automática funciona bajo Windows, pero no en Linux
index.php
<?php
spl_autoload_extensions(".php");
spl_autoload_register();
use modules\standard as std;
$handler = new std\handler();
$handler->delegate();
?>
módulos \ \ handler.php estándar
<?php
namespace modules\standard {
class handler {
function delegate(){
echo 'Hello from delegation!';
}
}
}
?>
En Windows 7, ejecutando WAMP, el código produce el mensaje "¡Hola de delegación!" sin embargo, bajo Linux, me sale el siguiente:
Fatal error: spl_autoload(): Class modules\standard\handler could not be loaded in /var/www/index.php on line 15
Windows se está ejecutando PHP 5.3.0 bajo WAMP, y Linux se está ejecutando el paquete 5.3.2 dotdeb bajo Ubuntu 9.10.
Es éste un problema de configuración en mi máquina Linux, o simplemente una diferencia en la forma en que los espacios de nombres y de carga automática se maneja en los diferentes sistemas operativos
Este no es el caso, pero spl_autoload-register() traduce el nombre de la clase a minúsculas, por lo que se romperá en Unix si usa los nombres de camelCase (https://bugs.php.net/bug.php?id = 53065) –