在用记事本++和sublime进行了许多幸福的编码之后,建议我尝试使用PHP IDE。我正在尝试phpStorm,看起来不错。代码完成和文档编写是一个很棒的功能,但是当使用魔术方法时,对我来说却行不通。 是否有解决办法使phpStorm了解魔术方法的状况?
我们的情况是这样的:
abstract class a { public static function __callStatic($method,$args) { if(strpos($method,"get_by_") === 0) { //do stuff } elseif(strpos($method,"get_first_by_") === 0) { //do stuff } elseif($method == "get_all") { //do stuff } } } class b extends a { // some more stuff } b::get_by_user_id(27); b::get_first_by_id(156); b::get_all();
神奇的callStatic方法使我们能够通过1个或多个组成函数调用的参数来获取对象的集合。
我看到在这些情况下有一个@method语句可使用,但是phpStorm仅选择了这些语句中的第一个。此外,我只能将返回类型设置为Mixed,因为我希望能够将其设置为被调用的任何类(在我的示例中为b)。
任何想法或建议都会非常感激,谢谢。
使用类级别的PHPDoc注释-特别是 @method 标记-在PhpStorm中可以正常工作:
/** * @method static someClass get_by_user_id(int $id) Bla-bla * @method static someClass get_first_by_id(int $id) */ abstract class a { ...
在上面:
@method
static
someClass
$this
get_by_user_id
(int $id)
([[type] [parameter]<, ...>])
Bla-bla
有关更多@method:
PS 虽然@method static在PhpStorm中工作正常(告诉IDE该方法是静态的),但实际的phpDocumentor工具可能还不支持(还好吗?)(对不起,有一段时间没有使用它了)。
@method static
另外一种方法 :(当然是在PhpStorm中)Settings | Inspections | PHP | Undefined | Undefined method --> Downgrade severity if __magic methods are present in class-它不会以任何方式帮助此类方法的代码完成,但是不会将那些魔术方法标记为“未定义方法”错误。
Settings | Inspections | PHP | Undefined | Undefined method --> Downgrade severity if __magic methods are present in class
phpDocumentor的 关于@property/ @method标签使用RegEx /部分名称 的票据 (如何处理文档以及在处理代码完成时对实际IDE的帮助很少):
@property