我正在使用一个允许向框架的基类添加新组件的框架。有没有任何方法来记录这些新方法而不改变框架的文件,所以我可以通过点击到我的IDE中的方法。
我强烈建议不要尝试注入子类。如果框架实例化了你要直接扩展的类,你需要找到一种方法让它使用你的子类。
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
所做的,因为它已经是一个接口了。我还没有尝试混合类与接口,看看PhpStorm是否喜欢它。
这主要取决于您正在使用的IDE。我认为你应该扩展基类,并添加一些新的方法/属性与phpdoc评论。当然,改变框架的文件不是解决方案,正如你已经提到的
您可以扩展原始类,用新的doc重新定义函数,然后调用父函数。例如
class newClass extends originalClass
{
/**
* New PHPDoc
*/
function functionName($a)
{
return parent::functionName($a);
}
}
尝试使用@see或内联@link指令。