首頁 >後端開發 >php教程 >php中外部類別呼叫_get函數和_set函數的方法

php中外部類別呼叫_get函數和_set函數的方法

不言
不言原創
2018-07-31 09:39:211836瀏覽

這篇文章給大家分享的內容是關於php中外部類別呼叫_get函數和_set函數的方法,有詳細的程式碼,希望可以幫助到有需要的朋友。

外部呼叫類別的私有屬性

先來了解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

說明使用成功。

相關推薦:

thinkphp框架下PHP實作pdf導出功能的程式碼

PHP中strpos函數的深入分析

以上是php中外部類別呼叫_get函數和_set函數的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn