在记事本+ +和崇高编码经过许多愉快的岁月后,我被建议给PHP IDE一个去。我正在尝试phpStorm,它看起来不错。代码完成和文档是一个很棒的功能,但在使用魔术方法时不适合我。 有没有办法让phpStorm了解魔术方法中发生了什么?如何为IDE记录魔术(_call和_callStatic)方法
我们的情况是这样的:
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只提取这些语句中的第一个。此外,我只能将返回类型设置为混合,因为我希望能够将其设置为所需的任何类(在我的示例中为b)。
任何意见或建议将非常感激地收到,谢谢。
为什么_ANYONE_认为覆盖'_call'是个好主意? – 2014-12-12 00:45:13
需要说的是,如果任何理智的人会发现这个问题,Brian会对此发表评论。魔术方法适用于所有的意图和目的:不可文档化(尝试将一个(n)[参数| precondition | postcondtion |异常]记录到一个魔术方法中),而不是IDE友好的(尝试调试一个魔术方法),对重构(请,甚至不要考虑尝试在一个软件中重构一个神奇的方法),和LAZY(好吧,最后一个可能会被解释为一个观点)。 – 2016-08-03 00:26:41
-1与@ LukeA.Leber在评论中的观点相一致,因为它证明缺乏愿景。虽然魔术方法不是编写更少代码的一种方式(如果你使用它们是懒惰的),但魔术方法使体系结构成为可能,否则这种体系就不可能实现,或者那将非常复杂,不值得编写。使用PHPDoc时,它们完全是IDE友好的。 请注意,大多数时候你并不需要神奇的方法,但是当你需要它们时,就没有替代品(以PHP的形式)。当它们以非常结构化的方式使用它们时,它是一个完整的有效解决方案。 – MikeSchinkel 2017-11-04 03:05:05