首頁  >  文章  >  後端開發  >  PHP學習之外部呼叫類別的私有屬性

PHP學習之外部呼叫類別的私有屬性

little bottle
little bottle轉載
2019-04-26 18:02:372580瀏覽

本篇文章主要講述的是外部呼叫類別的私有屬性,具有一定的參考價值,有興趣的朋友可以了解一下,希望能夠幫到你。

外部呼叫類別的私有屬性

先來了解PHP類別中的__get__set函數
當試圖取得一個不可達屬性時,類別會自動呼叫__get函數。
當試圖設定一個不可達屬性時,類別會自動呼叫__set函數。

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

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

看一下它的回傳:

1

沒有問題,沒有呼叫__get函數,現在我來存取一個私有的不可達屬性:

<?php
    class A{
        public $a=1;
        private $b=2;
        function __get($name){
            echo &#39;you can get &#39;.$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 &#39;you can get &#39;.$name.$val;
        }
    }
    $dy = new A();
    $dy->a = 1;
    echo $dy->a;
?>

看一下輸出:

1

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

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

這時看到:

you can get b1

PHP 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

說明使用成功。

相關教學:PHP影片教學

#

以上是PHP學習之外部呼叫類別的私有屬性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除