使用魔法的缺点是什么?如何在子类中缩写它们?

时间:2012-07-27 11:59:32

标签: php doctrine magic-methods

我广泛使用魔术方法用于许多目的,如常见的setter和getter,使用__call()实现包装类。现在已经研究了学说,我想知道他们没有使用魔法吸气剂和设定者,如果我们在模型中指定它们实际上它们不起作用。

所以我的问题是如何将学说简化为魔术方法?在DocM中专门使用魔法方法有什么缺点?

1 个答案:

答案 0 :(得分:2)

  • 魔术代码难以记录和理解。通常你应该添加 对每个功能的评论并使用工具生成
    文档。这不适用于魔术方法。

  • 魔术方法不支持类型提示。 使用函数设置属性的最大优点之一是您可以使用类型提示。像这样的代码

    public function setUser(User $ user){this-> user = $ user}

    确保用户属性始终包含有效的用户对象或null。

  • IDE不支持魔术方法。 许多现代PHP IDE都支持自动完成。函数和方法由简单的解析器识别。此解析器无法检测魔法设置或调用操作。

我听说魔术方法比显式方法慢,但我自己从未测试过。

那你怎么没有魔法呢? 我使用模板生成geters和setter,通常我根本不使用__call。

魔术方法是创建代理对象和其他专业工具的非常有用的工具,但是你不应该在每个类中使用它们