>  기사  >  백엔드 개발  >  PHP 特殊方法 __set()、__get()_PHP教程

PHP 特殊方法 __set()、__get()_PHP教程

WBOY
WBOY원래의
2016-07-12 09:04:23870검색

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

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1073354.htmlTechArticlePHP 特殊方法 __set()、__get() ?php header(Content-type: text/html; charset=utf-8); class person{ //成员属性 private $name; private $age = 20; //成员方法 function usern...
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.