【咸鱼PHP】魔术方法__call、__callStatic

Offer收割机
• 阅读 1346
  • 自php5.3以后魔术方法中就多出了两个新成员__call、__callStatic

    • 说明

      • __call:在对象中调用一个不可访问方法时,__call() 会被调用。
      • 在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用。
  • 举例:

    
    class overwrite
    {
        public function __call($method, $arguments)
        {
            var_dump($name . '---call');
            var_dump($arguments);
        }
    
        public static function __callStatic($method, $arguments)
        {
            var_dump($name . '--callstatic');
            var_dump($arguments);
        }
    }
    
    $now = new overwrite();
    $now->suprise();
    overwrite::make();
    
    输出:
        string(19) "suprise---call"     array(1) { [0]=> string(3) "111" }        
        string(21) "make--callstatic" array(1) { [0]=> string(3) "222" }
  • 从上述例子中,可以清楚明白的看出来了ಠ_ರೃ,当调用不存在的方法、静态方法时,会调用__call、__callStatic

打印其中参数会输出方法和参数,参数以数组的形式显示

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
JS:call详解以及自己手写call
注:本篇文章示例来源于MDN:目录不知道各位是否看到大佬写的代码,里面的代码很是简洁,但是this出现的很多,上下文的调用,this的指向我们被绕的头晕,但是大佬却信手拈来,我觉得其中call的作用功不可没,可见想要js进阶,精通call的使用是不可或缺的。那就让我们来解开call的神秘面纱吧。call详解call的定义PS(
Wesley13 Wesley13
3年前
java中static的作用详解
java中static关键字表示静态的意思,主要用于以下三点,static成员变量,static成员方法和static块。在类中如果定义了static类型的对象(变量或者方法),在java虚拟机(JVM)加载类时,该对象就会被实例化,在使用的时候就不需要再去实例化,直接调用就可以了。常与private,public搭配使用。下面详细说一下这三部分。1
Wesley13 Wesley13
3年前
java中一些常考知识
一、static的作用 static是修饰符,用于修饰成员变量(静态变量/类变量)。static修饰的成员被所有对象共享。static优先于对象存在。static修饰的成员可以用类名.静态成员来访问。注:1.静态方法只能访问静态成员,非静态方法既能访问静态成员又可以访问非静态成员。2.静态方法中不可
Wesley13 Wesley13
3年前
Java多线程带返回值的Callable接口
Java多线程带返回值的Callable接口在面试的时候,有时候是不是会遇到面试会问你,Java中实现多线程的方式有几种?你知道吗?你知道Java中有可以返回值的线程吗?在具体的用法你知道吗?如果两个线程同时来调用同一个计算对象,计算对象的call方法会被调用几次你知道吗?如果这些你知道,那么凯哥(凯哥Java:kaigejava)恭喜你,本文你可以不用
Wesley13 Wesley13
3年前
Java面试系列
实现多线程的方式继承Thread类,重写run方法,调用start方法启动线程实现Runnable接口,重写run方法,调用start方法启动线程实现Callable接口,重写call方法,并用FutureTask包装,在newThread中传入FutureTask,然后调用start方
Wesley13 Wesley13
3年前
Unity之SDK接入(Unity与Android通信)
首先介绍一点关于Android与unity通信的知识:完成通信主要靠unity中的class.jar包(在unity的安装目录下)。在unity中调用android的方法:jo.call("方法名"\,参数名\)       其中\\代表可有可无。在endroid中调用unityu的方法:导入class.jar包,继承
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
JS 中的this指向问题和call、apply、bind的区别
this的指向问题一般情况下this对象指向调用函数的对象,全局环境中执行函数this对象指向window。functiona(){console.log(this);//输出函数a中的this对象}functionb(){};varc{name:"call"}
Stella981 Stella981
3年前
Linux 系统调用(system call)
1系统调用:(SYSTEMCALL)操作系统(operatingsystem)内核中有一组实现系统功能的过程,系统调用就是对上述过程的调用。程序员利用系统调用,向OS提出服务请求,由OS代为完成。一般情况下进程是不能够存取系统内核的。它不能存取内核使用的内核段,也不能调用内核函数,CPU的硬件结构保证了这一点。只有系统调用是个例
Stella981 Stella981
3年前
Phalcon7 增加逻辑处理类
Phalcon\Mvc\User\Logic拥有方法:getActionName($paramsNULL)、getActionParams($paramsNULL)、setContent($content)、getContent()以及静态方法:call($actonNameNULL,$actionParams
Offer收割机
Offer收割机
Lv1
可怜夜半虚前席,不问苍生问鬼神。
文章
4
粉丝
0
获赞
0