gpt4 book ai didi

PHP 部分相同的命名空间冲突

转载 作者:行者123 更新时间:2023-12-04 16:56:31 25 4
gpt4 key购买 nike

我有几个 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楷模。从技术上讲,它们不在同一个命名空间中。只是部分。但是为什么它给我一个错误然后..?

什么是解决这个问题的好方法?我知道我可以将其添加到第二行:
use App\Modules\module2\models as module2; // Now works

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

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

最佳答案

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

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

关于PHP 部分相同的命名空间冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12656088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com