【问题标题】:Phalcon PHP multi module namespace definitionPhalcon PHP 多模块命名空间定义
【发布时间】:2016-04-12 12:59:11
【问题描述】:

我将 Phalcon PHP 与 Multi module application 一起使用。我在我的项目中使用命名空间,但我正在寻找使用这些命名空间的东西。

例如,在我的视图文件夹中,我使用模型文件夹,而在我的控制器中,我也使用模型文件夹。但是我正在使用很多类模型来进行 Phalcon 查找或 findFirst。我发现让这个多应用程序工作的唯一方法是定义用于导入类的命名空间,如下所示:

use Apps\Common\Models\Users;
use Apps\Common\Models\Customers;
use Apps\Common\Models\Agents;
...

我的应用中有 50 个这样的模型...我不想在我的所有控制器和所有视图中定义它们以使其正常工作。

你有解决方案吗?

谢谢。

【问题讨论】:

    标签: php namespaces phalcon


    【解决方案1】:

    如果我理解正确,您可以省略控制器文件顶部的命名空间声明:

    use Models\News;
    
    class NewsController extends BaseController
    {
        public function indexAction()
        {
            // With Use above
            $obj = new News();
    
            // Without Use above (full namespace path)
            $obj = new \Models\News();
        }
    }
    

    【讨论】:

    • 那么如果我在每个控制器中使用 10 个模型,我必须在每个控制器顶部放置 usex 10 ?在我看来,我也必须这样做...... :(因为我不喜欢这种方式$obj = new \Models\News();
    • 是的,您必须从两个选项中选择一个。这就是命名空间的想法,这是无法避免的:)
    • 好的,谢谢。这可以在多模块应用程序中不使用命名空间方式吗?因为在 phalcon 单一应用程序中我从不使用命名空间,所以我使用的是 registerClasses 和 registerDir。这里可以吗?
    • 技术上是的,但我怀疑这是个好主意。如果您的应用程序如您所说的那样增长,则将很难维护。更多信息在这里:docs.phalconphp.com/en/latest/reference/…相信我,命名空间是你的朋友:)
    • 哦,我明白了。非常感谢 Nikki 我会试试这个:)
    猜你喜欢
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多