我制作了一堆课程并将它们放在 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 <中的每个类/ p>
答案 0 :(得分:1)
在bootstrap.php中。
Yii::setAlias('common', dirname(__DIR__));
Yii::setAlias('x/y', dirname(__DIR__).'/models');
在我的&#34;模特&#34;文件夹,有文件夹&#34; b&#34;和文件夹&#34; c&#34;在文件夹&#34; b&#34;。
models > b > c
我有一个名为&#34; LoginForm.php&#34;的模型文件。并驻留在文件夹&#34; c&#34;。 这个文件的顶部是这几行。
namespace x\y\b\c;
use Yii;
use yii\base\Model;
class LoginForm extends Model
在我的SiteController中我有这个。
use x\y\b\c\LoginForm;
在其中一个动作功能中,我可以成功调用此模型。
$model = new LoginForm();