我正在寻找不必在代码中编写getter和setter的选项。
目前我正在使用__call自动将getter和setter映射到我的属性,但是我被告知这很慢。
我有什么选择,因为编写getter和setter只返回属性不是很好地利用了我们的开发人员时间,并且维护它们更令人头疼
答案 0 :(得分:2)
虽然__call()
的性能可能不是很好,但我看到的唯一替代方法是从IDE生成代码。这也改进了许多最近编辑所具有的代码洞察功能,允许编辑器在您键入代码时建议方法名称;非常方便的东西!
另请参阅:How to generate getter and setter in eclipse (php)
顺便说一下 - __get()
和__set()
可能会遇到相同的性能问题,现在介绍它们会大大改变您现有的代码(不是一个好主意)。
修改强>
我找不到任何关于如何动态维护getter和setter的好文章,所以我想到了另一种方式(可能适用于你也可能不适用)。
您可以使用tokenizer
或Reflection
(或两者)编写代码转换器,为您负责维护。然后应该在保存时将其集成到IDE中,或者每次文件更改时都必须动态完成。
无论如何,只是一个想法:)
答案 1 :(得分:0)
好吧,您可以使用__set()和__get(),或者创建公共属性。我还没有听说过任何其他“神奇”方法。