Surcharge orientée objet PHP

不言
Libérer: 2023-03-29 22:22:01
original
1198 Les gens l'ont consulté

Cet article présente principalement la surcharge orientée objet en PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Définition :

1 ) "crée" dynamiquement les propriétés et les méthodes d'une classe.

2) Réalisé grâce à la méthode magique.

3) Lors de l'appel d'attributs ou de méthodes d'une classe qui sont indéfinis ou invisibles dans l'environnement actuel, la méthode surchargée sera appelée.

Surcharge d'attributs

__set      赋值

__get      读取

__isset    判断是否存在

__unset    销毁
Copier après la connexion

Exemple

// 属性的重载
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);
Copier après la connexion

Surcharge de méthodes

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

__callStatic   调用不可访问的静态方法
Copier après la connexion

Notez particulièrement que lors de la définition de __callStatic, il doit être défini comme méthode statique.

Exemple

<?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]);
Copier après la connexion

Recommandations associées :

Encapsulation orientée objet php

Méthodes magiques orientées objet php

Méthodes statiques, propriétés et constantes orientées objet php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!