PHP 特殊方法 __set()、__get()
<?php
header("Content-type: text/html; charset=utf-8");
class person{
//成員屬性
private $name;
private $age = 20;
//成員方法
function username($name){
return $this->name=$name;
}
//__set()方法用來設置私有屬性
function __set($property_name, $value) {
echo "在直接設置私有屬性值的時候,自動調用了這個 __set() 方法為私有屬性賦值<br />";
$this->$property_name = $value;
}
//__get()方法用來獲取私有屬性
function __get($property_name) {
echo "在直接獲取私有屬性值的時候,自動調用了這個 __get() 方法<br />";
}
}
$obj= new person();
echo $obj->username("張三");
echo "<hr/>";
$obj->name = "李四";//在直接設置私有屬性值的時候,自動調用了這個 __set() 方法為私有屬性賦值
echo "<hr/>";
echo $obj->age;//在直接獲取私有屬性值的時候,自動調用了這個 __get() 方法,不設置get特殊方法就會報下面的錯
//echo $obj->age;//當成員屬性或者方法前有private修飾,不能在類外訪問。否則報錯如下
/*
Fatal error: Cannot access private property person::$age in D:\wamp\www\ajax\index.php on line 23
*/
?>