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

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

little bottle
發布: 2023-04-06 12:10:02
轉載
2665 人瀏覽過

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

外部呼叫類別的私有屬性

先來了解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中文網其他相關文章!

相關標籤:
php
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板