程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 對象直接訪問私有屬性

php 對象直接訪問私有屬性

編輯:關於PHP編程

php 對象直接訪問私有屬性


 
<?php
 
    header("content-type:text/html;charset=UTF-8");
    class Person{
        //私有的成員屬性,對直接訪問象
        private $name;
        private $age;
        private $sex;
         
        //魔術方法 __construct(), __set(), __unset(), __isset(), __unset().....
        function __construct($name="name1",$age =20,$sex="女"){
            $this->name=$name;
            $this->age=$age;
            $this->sex=$sex;
        }
         
        /*
            輸出 Cannot access private property Person::$name
             
            對象不能直接訪問和設置私有屬性的值,但是通過魔術方法__get($proName), __set($proName,$proValue)可以做到.
            步驟:
                1.重寫魔術方法__get($property) , __set($proName,$proValue)
                2.用對象直接訪問或設置私有屬性
                    $p1->name="對象直接訪問私有屬性";
                    echo $p1->name;
                3.對象直接訪問或設置私有屬性時,會自動調用魔法方法__get($proName), __set($proName,$proValue)
        */
        function __get($proName){
            return $this->$proName;
        }
         
        function __set($proName,$proValue){
            $this->$proName=$proValue;
        }
         
        function say(){
            echo "$this->name:我的年齡$this->age,性別:$this->sex<br>";
        }
         
        function run(){
            $this->left();
            $this->right();
        }
         
        private function left(){
            echo "left";
        }
         
        private function right(){
            echo "right";
        }
         
        //析構方法,對象銷毀前自動調用
        function __destruct(){
            echo "$this->name:我走了<br>";
        }
    }
      
    $p1 = new Person("name1",15,"女");
    $p2 = new Person("name2",20,"男");
    $p3 = new Person("name3",30,"女");
     
     
     
     
    /*
        對象直接訪問或設置私有屬性
    */
    $p1->name="對象直接訪問私有屬性";
    echo $p1->name."<br>";
     
    /*
    輸出,注意__destruct()的輸出順序
     
        name1:我的年齡15,性別:女
        name2:我的年齡20,性別:男
        name3:我的年齡30,性別:女
         
        name1:我走了
        name3:我走了
        name2:我走了
    */
    $p1->say();
    $p2->say();
    $p3->say();
    $p1=null;
     
     
?>

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved