理解PHP的OOP魔术方法__set()和__get()

时间:2016-06-05 06:55:51

标签: php oop

我很难理解面向对象PHP中的魔术方法 - 例如,<select chosen width="'100%'" ... ></select>

__set()

打印出来:

  

将名称设置为测试

我不理解的是为什么<?php class Post{ private $name; public function __set($name, $value){ echo 'Setting '.$name.' to <strong>'.$value.'</strong><br />'; $this->name = $value; } } $post = new Post; $post->name = 'Testing'; ?> 改为&#34; name&#34;在$name内?

我还希望用简明的英语解释如何以及为何使用__set()__set()

1 个答案:

答案 0 :(得分:1)

$name已更改为$this->name,而不是name。在$this->name中,它是对象$this的属性。

通常,您永远不会使用__get()__set()。例如,可以在错误处理中使用它们来访问不可访问的private属性,例如name属性。