名称空间,Yii2上的别名与目录结构不同

时间:2016-01-11 14:13:36

标签: namespaces yii2 alias

我制作了一堆课程并将它们放在 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>

1 个答案:

答案 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();