Ich habe folgende PHP-Code:Namespace Autoload arbeitet unter Windows, aber nicht auf Linux
index.php
<?php
spl_autoload_extensions(".php");
spl_autoload_register();
use modules\standard as std;
$handler = new std\handler();
$handler->delegate();
?>
Module \ standard \ handler.php
<?php
namespace modules\standard {
class handler {
function delegate(){
echo 'Hello from delegation!';
}
}
}
?>
Unter Windows 7, WAMP ausgeführt, erzeugt der Code die Nachricht "Hallo von Delegierung!" jedoch unter Linux, erhalte ich folgende:
Fatal error: spl_autoload(): Class modules\standard\handler could not be loaded in /var/www/index.php on line 15
Windows PHP 5.3.0 unter WAMP laufen, und Linux das 5.3.2 Dotdeb Paket unter Ubuntu 9.10 läuft.
Ist das ein Konfigurationsproblem auf meiner Linux-Box, oder einfach nur ein Unterschied in der Art, wie Namespaces und die automatischen Laden auf den verschiedenen Betriebssystemen behandelt
Dies ist nicht der Fall, aber spl_autoload-register() übersetzt den Klassennamen in Kleinbuchstaben, so dass es unter Unix bricht, wenn Sie camelCase-Namen verwenden (https://bugs.php.net/bug.php?id) = 53065) –