如果我有一个具有属性$ 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_name
和fullname()
方法(不是good idea)。当然,对于 __get
and __set
,没什么大不了的。
更一般而言,设置属性可能不像存储值那样简单。直接访问成员字段可能导致其他功能,导致对象处于不一致状态。想象一下,您存储了一个需要保持排序的数组;如果数组是公共(public)的,则其他方法可以将未排序的数组分配给该字段。