【发布时间】:2015-10-28 21:08:53
【问题描述】:
是否可以在spl_autoload_register 中(自动)使 Class 可访问?
例如,我在 index.php 中使用spl_autoload_register:
<?php
class Utils {
public function example() {
echo 'Hello word!';
}
}
spl_autoload_register(function($class)
{
$relative_class = strtolower(str_replace('\\', '/', $class));
$file = './src/' . $relative_class . '.php';
if (is_file($file)) {
require_once $file;
}
});
$user = new \Controllers\Foo\User;
这个new \Controllers\Foo\User;自动加载这个文件./src/controllers/foo/user.php
user.php:
<?php
namespace Controllers/Foo;
class User
{
public function foo() {
//Something...
}
}
如果我需要使用 Utils 类,我必须在文件 user.php 中添加 new \Controllers\Foo\User,如下所示:
public function foo() {
\Utils::example();
}
或
<?php
namespace Controllers/Foo;
use \Utils as Utils;
class User
{
public function foo() {
Utils::example();
}
}
可以在spl_autoload_register 中访问Utils 类(自动)吗?我会使用不带 use \Utils as Utils; 且不带反斜杠 (\Utils::)。
【问题讨论】:
标签: php namespaces autoload spl