如果我有一个具有属性$ name的类“人”及其getter(get_name())和setter(set_name())方法,则在实例化对象并设置属性后,即

$paddy = new person();

$paddy->set_name("Padyster Dave");

echo "Paddy's full name: ".$paddy->name; //WHY THIS IS NOT RECOMMENDED...

在上面的代码$paddy->name;中,为什么不建议这样做



上面的代码是一个示例代码,没有分配任何访问器。.它只是为了理解$ paddy-> name概念

最佳答案

因为您可能有一天会摆脱$name成员,所以将其替换为(例如)$first_name$last_namefullname()方法(不是good idea)。当然,对于 __get and __set ,没什么大不了的。

更一般而言,设置属性可能不像存储值那样简单。直接访问成员字段可能导致其他功能,导致对象处于不一致状态。想象一下,您存储了一个需要保持排序的数组;如果数组是公共(public)的,则其他方法可以将未排序的数组分配给该字段。

10-04 10:40