我刚刚学习 PHP 命名空间并开始创建一个简单的自动加载函数。O所做的是:
function __autoload($name) {
echo $name . "<br />";
require_once $name . ".php";
}
因此,如果我不使用任何别名或导入语句,例如,这将有效。use MainNamespace\Subnamespace
因为如果我这样做了,假设我有:
\GreatApp\Models\User.php
\GreatApp\Models\Project.php
\GreatApp\Util\Util.php
\GreatApp\Util\Test\Test.php
如果我尝试这样做:
new GreatApp\Models\User();
它之所以有效,是因为$name
在自动加载中会变得GreatApp\Models\User
如此GreatApp\Models\User.php
。但是当我这样做时:
use GreatApp\Models;
new User();
它失败了,因为现在$name
是公正的User
,User.php
不会被发现。那我应该如何设置自动加载呢?