Mam następujący kod php:nazw Autoload działa pod windows, ale nie na Linux
index.php
<?php
spl_autoload_extensions(".php");
spl_autoload_register();
use modules\standard as std;
$handler = new std\handler();
$handler->delegate();
?>
moduły \ standardowego \ handler.php
<?php
namespace modules\standard {
class handler {
function delegate(){
echo 'Hello from delegation!';
}
}
}
?>
W systemie Windows 7, uruchomionym WAMP, kod generuje komunikat "Hello from Delegation!" jednak pod Linuksem, mam następujące:
Fatal error: spl_autoload(): Class modules\standard\handler could not be loaded in /var/www/index.php on line 15
uruchomiony jest system Windows PHP 5.3.0 pod WAMP i Linux jest uruchomiony pakiet 5.3.2 dotdeb pod Ubuntu 9.10.
Czy jest to kwestia konfiguracji na moim Linuksie, czy tylko różnica w sposobie nazw i autoloading jest obsługiwane na różnych systemach operacyjnych
To nie jest przypadek, ale spl_autoload-register() tłumaczy nazwę klasy na małe litery, więc będzie łamać się na Uniksie, jeśli użyjesz nazw camelCase (https://bugs.php.net/bug.php?id = 53065) –