我正在寻找不必在我的代码中编写 getter 和 setter 的选项。
目前我正在使用 __call 自动将 getter 和 setter 映射到我的属性,但是我被告知这非常慢。
我有什么选择,因为仅编写 getter 和 setter 来返回属性并不能很好地利用我们的开发人员时间,而且维护它们更让人头疼
虽然__call()
性能可能不是很好,但我为您看到的唯一选择是从 IDE 生成代码。这也改进了许多最近的编辑器具有的代码洞察功能,允许编辑器在您键入代码时建议方法名称;非常方便的东西!
另请参阅:如何在 Eclipse (php) 中生成 getter 和 setter
顺便说一句 - __get()
and__set()
可能会有相同的性能问题,现在引入它们会极大地改变你现有的代码(不是一个好主意)。
编辑
我找不到任何谈论如何动态维护 getter 和 setter 的好文章,所以我想到了另一种方法(可能对你有用,也可能对你不起作用)。
tokenizer
您可以编写一个代码转换器,通过使用其中一个或Reflection
(或两者)来为您负责维护。这应该在保存时集成到 IDE 中,或者每次文件更改时都必须动态完成。
无论如何,只是一个想法:)
好吧,您可以使用 __set() 和 __get(),或者制作公共属性。我还没有听说过任何其他“魔术”方法可以做到这一点。