php面向对象【四个经典PHP魔术方法】

本文深入介绍了PHP中的魔术方法,包括__get和__set用于属性接管,__call与__callStatic控制对象方法调用,__toString实现对象转字符串,以及__invoke使对象能够作为函数调用。通过具体实例展示了这些魔术方法的使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php

/*
    __get/ __set
    用来将对象的属性进行接管

    __call/ __callStatic
    控制php对象的方法调用

    __toString
    将php对象转换成字符串

    __invoke
    将对象当作函数用会回调

**/

namespace  MagicMethod;

class Mgc {

    protected $array = [];

//  __set, __get ,  用来将对象的属性进行接管
    public function __set($key, $value)
    {
        $this->array[$key] = $value;
        echo '成功生成: key:'.$key.', value:'.$value."\n";
    }
    public function __get($key)
    {
        if(isset($this->array[$key]))
        {
            echo $this->array[$key];
        }else{
            echo 'key: '.$key." ,并不存在无法获取\n";
        }
    }

//   __call, __callStatic  接管php对象的不存在的方法调用
    public function __call($function, $params)
    {
        var_dump($function, $params);
    }
    public static function  __callStatic($function, $params)
    {
        var_dump($function, $params);
    }

//  __toString 将php对象转换成字符串
    public function __toString()
    {
        return __CLASS__;
    }

// __invoke 接管把对象当作函数
    public function __invoke($param)
    {
        var_dump($param);
    }
}

$obj = new  Mgc();

/*
echo $obj->name;
echo $obj->name = 'Mr.silvercell';
echo $obj->name;
*/

/*
$obj->test('param1','value1');
Mgc::testing('paramX', 'valueX','valueY');
*/

/*
echo $obj;
*/

/*
$obj(123);
*/




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

银色种子

打赏 >100 请留言,并私信

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值