【发布时间】:2012-05-15 08:22:06
【问题描述】:
我正在寻找不必在我的代码中编写 getter 和 setter 的选项。
目前我正在使用 __call 自动将 getter 和 setter 映射到我的属性,但是我被告知这非常慢。
我有什么选择,因为编写 getter 和 setter 只返回属性并不能很好地利用我们的开发人员时间,维护它们更让人头疼
【问题讨论】:
-
一些 ide 可以为你做这件事。代码生成未得到充分利用。
我正在寻找不必在我的代码中编写 getter 和 setter 的选项。
目前我正在使用 __call 自动将 getter 和 setter 映射到我的属性,但是我被告知这非常慢。
我有什么选择,因为编写 getter 和 setter 只返回属性并不能很好地利用我们的开发人员时间,维护它们更让人头疼
【问题讨论】:
虽然__call() 的性能可能不是很好,但我看到的唯一替代方案是从 IDE 生成代码。这也改进了许多最近的编辑器具有的代码洞察功能,允许编辑器在您键入代码时建议方法名称;非常方便的东西!
另请参阅:How to generate getter and setter in eclipse (php)
顺便说一句 - __get() 和 __set() 可能会有相同的性能问题,现在引入它们将极大地改变您现有的代码(不是一个好主意)。
编辑
我找不到任何谈论如何动态维护 getter 和 setter 的好文章,所以我想到了另一种方法(可能适合你,也可能不适合你)。
您可以编写一个代码转换器,使用tokenizer 或Reflection(或同时使用两者)为您完成维护工作。这应该在保存时集成到 IDE 中,或者每次文件更改时都必须动态完成。
无论如何,只是一个想法:)
【讨论】:
好吧,您可以使用 __set() 和 __get(),或者创建公共属性。我还没有听说过任何其他“魔法”方法可以做到这一点。
【讨论】:
->getVariable() 重命名为 ->variable ...当其他人使用您的 API 时,情况会变得更糟