1

このように定義されたPHPクラスがいくつかあります。

module1Model.php

namespace App\Modules\module1\models;

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

module2Model.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

そして、この問題を解決するための良い方法は何でしょうか?私はこれを2行目に追加できることを知っています:

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 に答える