Ho il seguente codice PHP:Namespace caricamento automatico funziona sotto Windows, ma non su Linux
index.php
<?php
spl_autoload_extensions(".php");
spl_autoload_register();
use modules\standard as std;
$handler = new std\handler();
$handler->delegate();
?>
moduli \ \ handler.php serie
<?php
namespace modules\standard {
class handler {
function delegate(){
echo 'Hello from delegation!';
}
}
}
?>
In Windows 7, eseguendo WAMP, il codice genera il messaggio "Salve da Delegazione!" tuttavia sotto Linux, ottengo il seguente:
Fatal error: spl_autoload(): Class modules\standard\handler could not be loaded in /var/www/index.php on line 15
Windows è in esecuzione PHP 5.3.0 sotto WAMP, e Linux è in esecuzione il pacchetto 5.3.2 dotdeb sotto Ubuntu 9.10.
È questo un problema di configurazione sulla mia macchina Linux, o semplicemente una differenza nel modo in cui spazi dei nomi e caricamento automatico viene gestito sui diversi sistemi operativi
Questo non è il caso, ma spl_autoload-register() traduce il nome della classe in minuscolo, quindi si interromperà su Unix se usi i nomi di camelCase (https://bugs.php.net/bug.php?id = 53065) –