>  기사  >  php教程  >  PHP 特殊方法 __set()、__get()

PHP 特殊方法 __set()、__get()

WBOY
WBOY원래의
2016-06-13 08:50:40930검색

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
    */
?>

 

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.