在我的命名空间中使用库

时间:2017-10-10 16:12:29

标签: php namespaces

我的项目中有几个库,在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 {}

1 个答案:

答案 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;
它应该运作良好!快乐的编码!如果它有助于确保支持我接受。