Heim  >  Artikel  >  Backend-Entwicklung  >  Objektorientiertes Überladen von PHP

Objektorientiertes Überladen von PHP

不言
不言Original
2018-06-06 10:05:461247Durchsuche

Dieser Artikel stellt hauptsächlich das objektorientierte Überladen in PHP vor, das einen gewissen Referenzwert hat. Jetzt kann ich es mit allen teilen. Freunde in Not können darauf verweisen

Definition:

1) „erstellt“ dynamisch die Eigenschaften und Methoden einer Klasse.

2) Erreicht durch magische Methode.

3) Beim Aufrufen von Attributen oder Methoden einer Klasse, die in der aktuellen Umgebung undefiniert oder unsichtbar sind, wird die überladene Methode aufgerufen.

Attributüberladung

__set      赋值

__get      读取

__isset    判断是否存在

__unset    销毁

Beispiel

// 属性的重载
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);

Methodenüberladung

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

__callStatic   调用不可访问的静态方法

Besonderer Hinweis: Bei der Definition von __callStatic muss es als statische Methode definiert werden.

Beispiel

<?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]);

Verwandte Empfehlungen:

php-objektorientierte Kapselung

php Objektorientierte magische Methoden

Objektorientierte statische PHP-Methoden, Eigenschaften und Konstanten

Das obige ist der detaillierte Inhalt vonObjektorientiertes Überladen von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn