我目前正在做一个关于PHP的教程,它让我创建了一个可能代表网站用户的类Person。
有两个公共字段($firstname
和$lastname
),教程让我使用$some_person->firstname
访问它们。
我知道在Java中,我们很可能希望将这些字段设为私有,并使用getter和setter来访问它们。我应该将同样的做法应用于PHP吗?
答案 0 :(得分:2)
是的 - PHP5 +支持类中的public/protected/private
方法。您不需要设计getter / setter,但如果类增长/添加功能,它会比让人们直接调用属性更安全。
答案 1 :(得分:0)
是的,一般来说,属性应该是protected
或private
,并提供getter和setter。这将允许您在setter签名中添加类型提示或在setter主体中进行验证,这将使不良数据更难以滑入未被注意的属性。即使“你现在不需要它”,我倾向于推荐这种方法 - 你可以稍后再这样做。
PHP中针对public
属性的论证与Java中的相同:它打开了类的“黑盒子”到外部世界,并开始打破类的封装意在提供首先。
通常要扩展类,这与属性应该是protected
还是private
有关。如果子类是可信的(例如,相同代码库的一部分),开发人员可能乐于允许直接访问该属性,在这种情况下它可以是protected
。但是,如果代码是用于发布(例如作为F / OSS库),则有一个强制子类使用getter和setter方法的参数,在这种情况下属性应该是private
。