我的项目中有几个库,在namespace
中创建。当我需要在我的控制器(MVC)
中使用其中一个时,我包括require
并使用同一命名空间中的此库。我想知道我是否可以加入命名空间,所以我不需要每次都需要在控制器内部。我的autoload
已加载到另一个文件中,然后调用controller
继续该规则。
实际控制器
namespace application\controller\rule;
use application\controller\database;
use application\model\object as object;
require '/xxx/xxx/autoloadLibary1.php';
require '/xxx/xxx/autoloadLibary2.php';
require '/xxx/xxx/autoloadLibary3.php';
require '/xxx/xxx/autoloadLibary4.php';
class MyClass {}
答案 0 :(得分:0)
我想我可能没有完全理解你,但我认为你想要使用
require '/xxx/xxx/autoloadLibary1.php';
为use application\xxx\xxx;
所以为此你必须使用作曲家或我总是使用的替代 composer ,基本上使用this链接来下载psr-4 / psr-0自动加载器比作曲家,将文件composer-file-loader-master / PackageLoader.php复制到你的项目中。
使用此
include __DIR__ . '/includes/PackageLoader.php';
$packageLoader = new PackageLoader\PackageLoader();
$packageLoader->load( __DIR__ . '/includes' );//change where your composer.json file located
使用此psr-4自动加载功能在单个命名空间中找到两个以上的位置
{
"autoload": {
"psr-4": {
"Namespace\\": [
"./xxx/xxx/",
"./another-location"
]
}
}
}
现在,如果您使用此声明:
use application\controller\database;
use application\model\object as object;
use application\xxx\xxx\autoloadLibary1;
use application\xxx\xxx\autoloadLibary2;
use application\xxx\xxx\autoloadLibary3;
use application\xxx\xxx\autoloadLibary4;
它应该运作良好!快乐的编码!如果它有助于确保支持我接受。