Я только изучал пространства имен 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
не будет найдено.Как мне настроить автозагрузку тогда?