文档章节

PHP魔术方法之__call与__callStatic方法

tree2013
 tree2013
发布于 2016/04/19 18:21
字数 300
阅读 30
收藏 3

__call方法用于调用类中未定义的方法,__callStatic方法用于调用类中为调用的静态方法,两个函数都接受两个参数,第一个参数为函数名,第二个为传递的参数。与其他函数调用方式不同的是第一个参数的值会自动是调用的名字,第二个参数为数组传递过来的。

<?php  
  
class human{  
  
  private function t(){  
  }  
  
//魔术方法__call  
/* 
$method 获得方法名 
$arg 获得方法的参数集合 
*/  
public function __call($method,$arg){  
    echo '你想调用我不存在的方法',$method,'方法<br/>';  
    echo '还传了一个参数<br/>';  
    echo print_r($arg),'<br/>';  
  }
    
//魔术方法__callStatic  
public static function __callStatic($method,$arg){  
    echo '你想调用我不存在的',$method,'静态方法<br/>';  
    echo '还传了一个参数<br/>';  
    echo print_r($arg),'<br/>';  
  }  
  
}  
  
$li=new human();  
  
$li->t('a','b');  
/*  
__call是调用不可见(不存在或无权限)的方法时,自动调用  
$lisi->say(1,2,3);-----没有say()方法----> __call('say',array(1,2,3))运行  
*/   
  
human::cry('痛哭','鬼哭','号哭');  
/*  
__callStatic 是调用不可见的静态方法时,自动调用.  
Human::cry('a','b','c')----没有cry方法---> Human::__callStatic('cry',array('a','b','c'));  
*/   
  
?>


© 著作权归作者所有

共有 人打赏支持
tree2013
粉丝 27
博文 194
码字总数 62280
作品 0
武汉
后端工程师
Laravel5.2之PHP重载(overloading)

说明:本文主要讲述PHP中重载概念,由于Laravel框架中经常使用这块知识点,并且PHP的重载概念又与其他OOP语言如JAVA中重载概念不一样,故复习并记录相关知识点。同时,作者会将开发过程中的一...

botkenni
2016/10/24
2
0
PHP魔术方法学习笔记

YII2框架controller的继承关系如下: yiibasecomponents yiibasecontroller yiiwebcontroller 而components源码里面的魔术方法让人印象深刻: 魔术方法: 是指某些情况下,会自动调用的方法,称...

风清扬-深圳
2015/12/18
50
0
php 魔术方法 重载

重载 属性重载与方法重载 PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法。我们是通过魔术方法(magic methods)来实现的。 当调用当前环境下未定义或不可见的类属性或方法时...

蛋定龙
2015/10/16
53
0
PHP中用下划线开头的变量含义

命名的规则 加一个为私有的 加两个一般都是系统默认的,系统预定义的,即所谓: “魔术方法”与“魔术常量” PHP起止为双下划线的常量即为“魔术常量”: LINE文件中的当前行号。 FILE文件的...

linuxjd
2014/09/13
0
1
Lavavel笔记 Eloquent ORM分页源码分析

安装了laravel-debugbar后打开一个列表页面,发现页面输出有两个 select count(*) 语句,这是一个严重的设计缺陷呀。 查看代码 $users = User::where('votes', '>', 100)->paginate(15);$cou...

daweilang
2017/03/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Zookeeper总结

Zookeeper的部分概念 什么是zookeeeper? Zookeeper是一个分布式服务的协调中心 zookeeper节点的角色类型? Leader(领导者)、Follower(跟随者)、Observer(观察者) Leader 负责更新系统...

DemonsI
24分钟前
1
0
Redis学习笔记

常用命令 从Docker进入Redis的命令 sudo docker exec -it redis /bin/bash

OSC_fly
25分钟前
0
0
SqlServer查询某个日期的数据

select * from View_ZJMONITORINGCORROSION where ENTERDATE > CONVERT(datetime,DATEADD(day,1,'2017/12/28 14:53:07'))...

笑丶笑
26分钟前
0
0
常用编码规范

Standard characters https://ascii.cl/

yeahlife
28分钟前
0
0
flannel实战

docker swarm mode的出现是个里程碑,官方原生的编排调度看起来都成雏形了,但是swarm mode和容器外部系统的对接、网络性能始终不尽人意,swarm mode下各种开源周边不能使用,感觉swarm mod...

China_OS
30分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部