我应该像对Java说明符一样对PHP访问说明符应用相同的做法吗?

时间:2014-02-05 19:59:43

标签: php

我目前正在做一个关于PHP的教程,它让我创建了一个可能代表网站用户的类Person。

有两个公共字段($firstname$lastname),教程让我使用$some_person->firstname访问它们。

我知道在Java中,我们很可能希望将这些字段设为私有,并使用getter和setter来访问它们。我应该将同样的做法应用于PHP吗?

2 个答案:

答案 0 :(得分:2)

是的 - PHP5 +支持类中的public/protected/private方法。您不需要设计getter / setter,但如果类增长/添加功能,它会比让人们直接调用属性更安全。

答案 1 :(得分:0)

是的,一般来说,属性应该是protectedprivate,并提供getter和setter。这将允许您在setter签名中添加类型提示或在setter主体中进行验证,这将使不良数据更难以滑入未被注意的属性。即使“你现在不需要它”,我倾向于推荐这种方法 - 你可以稍后再这样做。

PHP中针对public属性的论证与Java中的相同:它打开了类的“黑盒子”到外部世界,并开始打破类的封装意在提供首先。

通常要扩展类,这与属性应该是protected还是private有关。如果子类是可信的(例如,相同代码库的一部分),开发人员可能乐于允许直接访问该属性,在这种情况下它可以是protected。但是,如果代码是用于发布(例如作为F / OSS库),则有一个强制子类使用getter和setter方法的参数,在这种情况下属性应该是private