4

我刚刚学习 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是公正的UserUser.php不会被发现。那我应该如何设置自动加载呢?

4

1 回答 1

1

无论您如何导入命名空间和引用一个类,完整的命名空间路径总是传递给自动加载器。它应该工作。

只是 __autoload 函数本身应该属于主(根)命名空间

于 2010-07-23T13:34:36.087 回答