【发布时间】:2011-02-21 04:08:06
【问题描述】:
我有以下 php 代码:
index.php
<?php
spl_autoload_extensions(".php");
spl_autoload_register();
use modules\standard as std;
$handler = new std\handler();
$handler->delegate();
?>
模块\标准\handler.php
<?php
namespace modules\standard {
class handler {
function delegate(){
echo 'Hello from delegation!';
}
}
}
?>
在 Windows 7 下,运行 WAMP,代码会生成消息“Hello from Delegation!”但是在 Linux 下,我得到以下信息:
致命错误:spl_autoload(): Class modules\standard\handler could not be loaded in /var/www/index.php on line 15
Windows 在 WAMP 下运行 PHP 5.3.0,Linux 在 Ubuntu 9.10 下运行 5.3.2 dotdeb 包。
这是我的 linux 机器上的配置问题,还是只是在不同操作系统上处理命名空间和自动加载的方式不同
【问题讨论】:
-
不是这种情况,但是 spl_autoload-register() 将类名转换为小写,所以如果你使用驼峰命名法(bugs.php.net/bug.php?id=53065),它会在 Unix 上中断
标签: php namespaces autoload