1

我有几个 PHP 类是这样定义的:

模块1模型.php

namespace App\Modules\module1\models;

class module1Model
{
    //... methods etc.
}

模块2模型.php

namespace App\Modules\module2\models;

class module2Model
{
    //... methods etc.
}

在其他一些类中,我想使用这些名称空间。所以我在页面顶部放置了以下几行:

someClass.php

namespace App\Modules\someClass\controllers;

use App\Modules\module1\models; // Works
use App\Modules\module2\models; // Fails

use Core\Logger\TextLogger; // Works

class somceClass
{
    //... methods etc.
}

所以在someClass我试图use同时module1module2模型。从技术上讲,它们不在同一个命名空间中。只是部分。但是为什么它会给我一个错误呢..?

什么是解决这个问题的好方法?我知道我可以将其添加到第二行:

use App\Modules\module2\models as module2; // Now works

但我真的不喜欢这样做,因为我在所有其他课程中都没有这样做(使用as关键字)。这感觉太不协调了。

有没有其他方法可以使这项工作..?还是我真的被迫as在我的所有声明中使用关键字use...?:-(

4

1 回答 1

1

我猜你想使用模型类,而不是它们的整个命名空间。如果是这样,那么以下只是有效的:

use App\Modules\module1\models\module1Model;
use App\Modules\module2\models\module2Model;

例子:

namespace App\Modules\module1\models {
    class module1Model
    {
        //... methods etc.
    }
}

namespace App\Modules\module2\models {
    class module2Model
    {
        //... methods etc.
    }
}
namespace App\Modules\someClass\controllers {

use App\Modules\module1\models\module1Model;
use App\Modules\module2\models\module2Model;

use Core\Logger\TextLogger;

    class somceClass
    {
        //... methods etc.
    }
}
于 2012-09-30T13:55:44.357 回答