Rumah > pembangunan bahagian belakang > tutorial php > php面向对象之魔术方法

php面向对象之魔术方法

不言
Lepaskan: 2023-03-29 22:14:02
asal
1151 orang telah melayarinya

这篇文章主要介绍了关于php面向对象之魔术方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

常见魔术方法

属性相关

__set($property, $value)     给不可访问的属性赋值

__get($propertyName)         调用不可访问的属性

__isset($content)    
对不可访问的属性使用empty()、isset()时触发

__unset($content)     
对不可访问的属性使用unset()时触发
Salin selepas log masuk

方法相关

__call(string $function_name, array $arguments)    
调用不可访问的普通方法
$function_name  被调用的方法名
$arguments      被调用方法的多个参数


__callStatic(string $function_name, array $arguments)
调用不可访问的静态方法
Salin selepas log masuk

综合例子

<?php

class Example
{
    // 可访问的属性
    public $price = 111;

    //不可访问的属性
    private $secret = &#39;我是不可访问的属性&#39;;
    private $age = 23;

    //不可访问的普通方法
    private function donTell()
    {
        echo &#39;不能说的秘密&#39;;
    }

    //不可访问的静态方法
    private static function super()
    {
        echo &#39;我是不可访问的静态方法&#39;;
    }

    //魔术方法
    public function __set($property, $value)
    {
        echo &#39;给不可访问的属性赋值,您要设置的属性是&#39;.$property.&#39;,值是&#39;.$value;
        $this -> $property = $value;
    }

    public function __get($propertyName)
    {
        echo &#39;调用私有属性&#39;.$propertyName.&#39;,它的属性值是&#39;.$this -> $propertyName;
    }

    public function __isset($content)
    {
        echo &#39;你在对不可访问的属性进行empty()、isset()操作&#39;;
        isset($this->$content);
    }

    public function __unset($content)
    {
        echo &#39;你在对不可访问的属性进行unset()操作&#39;;
        isset($this->$content);
    }


    public function __call($function_name,$args)
    {
        echo &#39;你在调用不可访问的普通方法&#39;;
        echo &#39;方法名是&#39;.$function_name;
        var_dump($args);
    }

    public static function __callStatic($function_name,$args)
    {
        echo &#39;调用不可访问的静态方法&#39;;
        echo &#39;方法名是&#39;.$function_name;
    }

}


//实例化对象
$e1 = new Example();


/******* 触发各种魔术方法 ***********/

// 测试__set方法
$e1 -> secret = &#39;我是秘密&#39;;
echo &#39;<hr/>&#39;;

// 测试__get方法
$e1 -> age;
echo &#39;<hr/>&#39;;

// 测试__isset()方法
echo isset($e1 -> age);
echo &#39;<hr/>&#39;;

// 测试__unset方法
unset($e1 -> age);
echo &#39;<hr/>&#39;;

// 测试__call方法
$e1 -> donTell([1,2,3]);
echo &#39;<hr/>&#39;;

// 测试__callStatic方法
$e1 -> super();



?>
Salin selepas log masuk

相关推荐:

php面向对象之静态方法、属性和常量

php面向对象之构造函数和析构函数

Atas ialah kandungan terperinci php面向对象之魔术方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan