我广泛使用魔术方法用于许多目的,如常见的setter和getter,使用__call()实现包装类。现在已经研究了学说,我想知道他们没有使用魔法吸气剂和设定者,如果我们在模型中指定它们实际上它们不起作用。
所以我的问题是如何将学说简化为魔术方法?在DocM中专门使用魔法方法有什么缺点?
答案 0 :(得分:2)
魔术代码难以记录和理解。通常你应该添加
对每个功能的评论并使用工具生成
文档。这不适用于魔术方法。
魔术方法不支持类型提示。 使用函数设置属性的最大优点之一是您可以使用类型提示。像这样的代码
public function setUser(User $ user){this-> user = $ user}
确保用户属性始终包含有效的用户对象或null。
IDE不支持魔术方法。 许多现代PHP IDE都支持自动完成。函数和方法由简单的解析器识别。此解析器无法检测魔法设置或调用操作。
我听说魔术方法比显式方法慢,但我自己从未测试过。
那你怎么没有魔法呢? 我使用模板生成geters和setter,通常我根本不使用__call。
魔术方法是创建代理对象和其他专业工具的非常有用的工具,但是你不应该在每个类中使用它们