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

Namespace with alias on Yii2 different from directory structure

我做了一堆classes,放在目录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');

并尝试使用

在另一个文件中导入这个 class
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[=35 中的每个 class =]

在bootstrap.php.

Yii::setAlias('common', dirname(__DIR__));
Yii::setAlias('x/y', dirname(__DIR__).'/models');

在我的 "models" 文件夹中,有文件夹 "b",文件夹 "c" 在文件夹 "b".

models > b > c

我有一个名为 "LoginForm.php" 的模型文件,位于文件夹 "c" 中。 此文件的顶部是以下几行。

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