【问题标题】:In phpdoc, define class properties in separate file在 phpdoc 中,在单独的文件中定义类属性
【发布时间】:2014-05-06 09:41:19
【问题描述】:

我正在使用一个框架,它允许向框架的基类添加新组件。有什么方法可以在不更改框架文件的情况下记录这些新方法,以便我可以点击进入我的 IDE 中的方法。

【问题讨论】:

    标签: php phpdoc


    【解决方案1】:

    我强烈建议不要尝试注入子类。如果框架直接实例化您要扩展的类,您需要找到一种方法让它使用您的子类。

    NetBeans 和 PhpStorm(可能还​​有许多其他)将组合来自同一类/接口的多个定义的元素。这允许您在不修改原始源代码的情况下向任何现有类添加属性和方法。

    /**
     * Framework controller base class.
     * Provides helpers via __call().
     */
    class Framework_Controller { ... }
    

    现在在您的代码库中创建一个文件您永远不需要包含相同的类定义。您的 IDE 仍应解析它并将其元素与上面的类合并:

    if (false) { // Safety first!
        /**
         * ACME Co. controller base class.
         *
         * @method ACME_Model_User getUser Load user via authentication helper
         */
        class Framework_Controller { /* nothing to add */ }
    }
    

    您可以尝试使用接口并正常声明方法,而不是使用@method。这就是我们对Zend_View 所做的,因为它已经是一个接口。我还没有尝试将 class 与 interface 混合,看看 PhpStorm 是否喜欢它。

    【讨论】:

      【解决方案2】:

      这主要取决于您使用的 IDE。我认为您应该扩展基类并使用 phpdoc cmets 添加一些新方法/属性。当然改变框架的文件不是你已经提到的解决方案

      【讨论】:

        【解决方案3】:

        您可以扩展原始类,重新定义函数,使用新文档,并调用父函数。 例如

        class newClass extends originalClass
        {
            /**
            * New PHPDoc
            */
            function functionName($a)
            {
                return parent::functionName($a);
            }
        }
        

        【讨论】:

          【解决方案4】:

          尝试使用@seeinline @link 指令。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-07-23
            • 2011-05-25
            • 2014-06-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-29
            相关资源
            最近更新 更多