PHP オブジェクト指向のオーバーロード

不言
リリース: 2023-03-29 22:22:01
オリジナル
1247 人が閲覧しました

この記事では主に、特定の参照値を持つ PHP のオブジェクト指向オーバーロードを紹介します。必要な友達はそれを参照できます。

1) の属性とプロパティを動的に「作成」します。クラスメソッド。

2) 魔法の方法で達成されました。

3) 現在の環境で未定義または非表示のクラスの属性またはメソッドを呼び出すときに、オーバーロードされたメソッドが呼び出されます。

属性のオーバーロード

__set      赋值

__get      读取

__isset    判断是否存在

__unset    销毁
ログイン後にコピー

// 属性的重载
class Person
{
    public $name = '小芳';
    protected $age = 18;

    public function __get($n)
    {
        //echo '试图读取不可访问的属性'.$n;

        if( $n == 'age'){
            return $this -> age;
        }else{
            return '你要查户口吗?';
        }
    }

    public function __set($n,$v)
    {
        //echo &#39;试图设置不可访问的属性&#39;,&#39;<br/>&#39;;
        $this -> $n = $v;
    }

    public function __isset($n)
    {
        echo &#39;判断不可访问的属性&#39;.$n.&#39;是否存在&#39;,&#39;<br/>&#39;;
    }

    public function __unset($n)
    {
        echo &#39;销毁不可访问的属性&#39;.$n,&#39;<br/>&#39;;
    }
}

$p1 = new Person();

// 读取
//echo $p1 -> age,&#39;<br/>&#39;;
//echo $p1 -> xxx,&#39;<br/>&#39;;

// 设置
//$p1 -> age = 30;
//echo $p1 -> age,&#39;<br/>&#39;;

// 判断存在与否
isset($p1 -> age);

// 销毁
unset($p1 -> age);
ログイン後にコピー

メソッドのオーバーロード

__call         调用不可访问的普通方法

__callStatic   调用不可访问的静态方法
ログイン後にコピー

__callStatic を定義する場合は、静的メソッドとして定義する必要があることに注意してください。


<?php

class MyClass
{
    protected function func($n)
    {
        echo &#39;这是一个不可访问的方法&#39;;
        echo &#39;参数有&#39;.$n;
    }

    protected static function fun2()
    {
        echo &#39;受保护的静态方法&#39;;
    }

    public function __call($function_name,$args)
    {
        echo &#39;触发了不可访问的方法&#39;;
        var_dump($function_name);
        var_dump($args);
    }

    public static function __callStatic($function_name,$args)
    {
        echo &#39;触发了不可访问jing tai方法,静态!!!!&#39;;
        var_dump($function_name);
        var_dump($args);
    }
} 

// 实例化
$c1 = new MyClass();

$c1 -> func([1,2,3]);

$c1 -> func2([1,2,3]);
ログイン後にコピー

関連する推奨事項:

php オブジェクト指向のカプセル化


php オブジェクト指向のマジックメソッド


php オブジェクト指向の静的メソッド、プロパティ、および定数

以上がPHP オブジェクト指向のオーバーロードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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