【发布时间】:2016-01-11 14:13:35
【问题描述】:
我做了一堆类并将它们放在目录common/a/b/c中。 所以,里面的文件
Class1.class.php
我有:
<?php
namespace x\y\b\c;
class Class1
...
命名空间不同于目录结构组织,因为我想要那样。 (x\y 应该映射到 common/a 目录) 在我的 common/config/bootstrap.php 我试过这个:
Yii::setAlias('common', dirname(__DIR__));
Yii::setAlias('x/y', '@common/a');
并尝试使用将此类导入另一个文件
use x\y\b\c\Class1;
没有成功。但如果我使用:
Yii::$classMap['x\y\b\c\Class1'] = __DIR__ . '/../../common/a/b/c/Class1.class.php';
代替 setAlias,它可以工作。
我想知道是否可以在不使用 composer 的情况下拥有与目录结构不同的命名空间,我该如何做到这一点,而不是映射 common/a/b/c
中的每个类【问题讨论】:
-
这对你有用吗,Yii::setAlias('x/y', dirname(__ DIR __).'/a'); ?将@common 更改为实际路径。
-
我刚刚测试了这个,Yii2 仍然给我 yii\base\ErrorException - Class 'x\y\b\c\Class1' not found
-
奇怪......它适用于我的本地主机。然后我会正确地写下答案
-
它可以工作,但你的文件名应该是
Class1.php。阅读更多:yiiframework.com/doc-2.0/guide-concept-autoloading.html
标签: namespaces yii2 alias