PHP の外部クラスから _get 関数と _set 関数を呼び出す方法

不言
リリース: 2023-04-03 13:50:01
オリジナル
1813 人が閲覧しました

この記事の内容は、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 を意味します。ここでは 関数が呼び出されます。最初に、到達可能な public 属性も使用する __set 関数を見てみましょう。

<?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 フレームワークで pdf エクスポート関数を実装するための PHP のコード

PHP の strpos 関数の詳細な分析

以上がPHP の外部クラスから _get 関数と _set 関数を呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート