我正在尝试更改我之前写过的自动加载系统。我正在使用作曲家,目前我只使用一个带有类图的库自动加载。
"autoload": {
"classmap": ["libs/"]
}
我想为其余的文件添加一个PSR-4加载程序,并能够在没有名称空间的情况下调用LIBS下的文件,并且不用"使用"它们,就像Laravel中的别名一样。这就是我要做的:
"autoload": {
"classmap": ["libs/"],
"psr-4": {
"App\": ""
}
}
因此,最终如果在" libs"中,我将其称为:
Session::get('anything')
,但是现在尝试添加psr-4并从名称段类中调用
之后namespace Appmodels;
Class User{
function get(){
return Session::get('anything');
}
}
它将不再起作用,因为它在用户名称空间中寻找会话。我知道有很多框架将其实现为箱子。必须需要。
我想为其余文件添加一个PSR-4加载程序,并能够在没有名称空间的情况下调用libs下的文件,而无需"使用"它们,就像Laravel中的类似别名。
,如果不添加use
或以Backslash 开头,您将无法使用类。这与您加载这些类别的方式无关,而是PHP本身的基本要求 - 因此,无论您如何设计自动加载,都无法解决。
所注释的,添加了后拔作品,但这是所需的最低限度:
namespace Appmodels;
Class User{
function get(){
return Session::get('anything');
}
}
我最终写了另一个班级,这些班级使我想要的任何类别的类都可以召唤出来。
您可以在这里看到它:
https://github.com/shahafan/samvc-app/blob/master/master/config/aliases.php
基本上,我只是使用PHP class_alias函数,因此我可以在使用它们之前加载所需的所有类。我认为Laravel以同样的方式进行。