PHP具有内置的_get和_set函数。为每个变量编写我自己的get和set函数还是将内置函数与其他if一起使用是否更好?每种方法的优缺点是什么?
最佳答案
__get
和__set
是通常应用于解决难题的魔术方法,而不应用作设计基础。
例如,我发现自己在一个项目中,在这个项目中,我必须分析一个使用具有深度继承(> 2)的OOP的站点,并且其中一个重要的基类具有一个名为name
的公共(public)属性。但是,它也具有 getter 和 setter (getName
,setName
),仅出于获取和设置该属性的目的而访问该属性。许多类称为getName
,并且有许多类直接访问name
属性!不是很好的设计。
魔术方法使我可以通过将属性重命名为_name
并将其设置为私有(private)来解决问题,并通过getter和setter强制对属性的所有请求。
话虽如此,如果您只是将属性视为变量,则不需要getter和setter。在这种情况下,只需将属性(property)公开!
在您的情况下,由于正在进行验证/清除,因此您应该使用getter和setter并将它们直接编码为方法(而不是不必要地招致魔术方法的开销)。
关于php - PHP的_get&_set或每个变量的唯一get和set函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3081829/