php中外部類調用_get函數和_set函數的方法

來源:互聯網
上載者:User
本篇文章給大家分享的內容是關於php中外部類調用_get函數和_set函數的方法,有詳細的代碼,希望可以協助到有需要的朋友。

外部調用類的私人屬性

先來瞭解一下PHP類中的__get__set函數
當試圖擷取一個不可達屬性時,類會自動調用__get函數。
當試圖設定一個不可達屬性時,類會自動調用__set函數。

首先,來看一下__get函數,先來擷取一個可達屬性試試:

<?php    class A{        public $a=1;        private $b=2;        function __get($name){            echo 'you can get '.$name;        }    }    $dy = new A();    echo $dy->a;?>

看一下它的返回:

1

沒有問題,沒有調用__get函數,現在我來訪問一個私人的不可達屬性:

<?php    class A{        public $a=1;        private $b=2;        function __get($name){            echo 'you can get '.$name;        }    }    $dy = new A();    echo $dy->b;?>

會發現:

you can get b

說明這裡調用了__get函數,我再來看一下__set函數,同樣也是先使用可達的public屬性:

<?php    class A{        public $a;        private $b;        function __set($name,$val){            echo 'you can get '.$name.$val;        }    }    $dy = new A();    $dy->a = 1;    echo $dy->a;?>

看一下輸出:

1

使用成功,沒有問題,接著我們來使用私人屬性:

<?php    class A{        public $a;        private $b;        function __set($name,$val){            echo 'you can get '.$name.$val;        }    }    $dy = new A();    $dy->b = 1;    echo $dy->b;?>

這時看到:

you can get b1PHP Fatal error:  Cannot access private property A::$b in /usercode/file.php on line 11

這裡調用了__set函數並提示我們不能使用類的私人屬性。
現在來通過__set函數實現外部使用私人屬性:

<?php    class A{        public $a;        private $b;        function __set($name,$val){                $this->$name=$val;        }        function B(){            echo $this->b;        }    }    $dy = new A();    $dy->b = 1;    $dy->B();?>

看一下輸出:

1

說明使用成功。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.