博客列表 >魔术方法__call与__callStatic的使用

魔术方法__call与__callStatic的使用

Pengsir
Pengsir原创
2018年01月12日 19:04:29669浏览

代码

<?php
/**
 * __call($method,$arg):调用类中不存在的动态方法的时候,自动调用
 * __callStatic($method,$arg):调用类中不存在的静态方法的时候,自动调用
 * cdll_user_func_array()实行跨类执行一些方法
 * 1.重点call_user_func_array([对象,类方法],参数)这个方法;用这个方法跳转到Demo1类中,取值
 * 2.重点call_user_func_array([类名,类方法],参数)这个是静态方法;用这个方法跳转到Demo1类中,取值
 */
include 'text.php';
class Demo
{
    public function __call($name, $argm)
    {
        return call_user_func_array([(new Text),$name],$argm);
    }
    public static function __callStatic($name, $argm)
    {
        return call_user_func_array(['Text',$name],$argm);
    }
}
$obj =new Demo;
echo $obj->hello('是非静态方法吗?','是的');
echo '<hr>';
echo Demo::get('我是静态方法','请用类名调用');

要跳转页面的代码:

<?php
class Text
{
    public function hello($arg1,$arg2)
    {
        return '我才是真正的非静态的方法:'.'参数是:'.$arg1.$arg2;
    }
    public static function get($arg1,$arg2)
    {
        return '我是真正的静态方法:'.'参数是:'.$arg1.$arg2;
    }
}

运行结果图:

魔术方法__call与__callStatic效果图.png


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议