php中__call() 和 __callStatic方法的使用
__call 与__callStatic 魔法方法是php5.3后新增的,二者的应用场景:
1、当要调用的方法不存在或权限不足时,会自动调用__call 方法。
2、当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法。
class Person
{ public function __call($method, $arguments) {
echo '我是要调用的不存在的动态方法名: ', $method, '<br>';
echo '以下是通过__call方法显示的参数', '<br>';
var_dump($arguments);
} public static function __callStatic($method, $arguments) {
echo '我是要调用的不存在的静态方法名: ', $method, '<br>';
echo '以下是通过__callStatic方法显示的参数', '<br>';
var_dump($arguments);
}
} // 调用对象不存在的方法hello
(new Person())->hello(['a', 'b'], ['c', 'd']);
echo '<hr>';
// 调用类不存在的静态方法world
Person::world(['e', 'f'], ['g', 'h']);
输出如下:
我是要调用的不存在的动态方法名: hello
以下是通过__call方法显示的参数
D:\wamp64\www\test\call.php:9:
array (size=2)
0 =>
array (size=2)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
1 =>
array (size=2)
0 => string 'c' (length=1)
1 => string 'd' (length=1)
我是要调用的不存在的静态方法名: world
以下是通过__callStatic方法显示的参数
D:\wamp64\www\test\call.php:15:
array (size=2)
0 =>
array (size=2)
0 => string 'e' (length=1)
1 => string 'f' (length=1)
1 =>
array (size=2)
0 => string 'g' (length=1)
1 => string 'h' (length=1)
php中__call() 和 __callStatic方法的使用的更多相关文章
- PHP 魔术方法 __call 与 __callStatic 方法
PHP 魔术方法 __call 与 __callStatic 方法 PHP 5.3 后新增了 __call 与 __callStatic 魔法方法. __call 当要调用的方法不存在或权限不足时,会 ...
- PHP中的__call和__callStatic方法
如何防止调用不存在的方法而出错,使用__call魔术重载方法. __call方法原型如下: mixed __call(string $name,array $arguments) 当调用一个不可访问的 ...
- PHP中的__call和__callStatic方法(未看完)
如何防止调用不存在的方法而出错,使用__call魔术重载方法. __call方法原型如下: mixed __call(string $name,array $arguments) 当调用一个不可访问的 ...
- __call()和__callStatic()方法
__call() 当对象访问不存在的方法时,__call()方法会被自动调用__callStatic() 当对象访问不存在的静态方法时,__callStatic()方法会被自动调用 这两个方法在PHP ...
- PHP魔术方法之__call与__callStatic方法
<?php class human{ private function t(){ } //魔术方法__call /* $method 获得方法名 $arg 获得方法的参数集合 */ public ...
- php中__call与__callstatic()使用
php 5.3 后新增了 __call 与__callStatic 魔法方法. __call 当要调用的方法不存在或权限不足时,会自动调用__call 方法. __callStatic 当调用的静态方 ...
- 魔术方法之__call与__callStatic方法
<?php class human{ private function t(){ } /** * 魔术方法__call * * @param string $method 获得方法名 * @pa ...
- PHP5中__call、__get、__set、__clone、__sleep、__wakeup的用法
__construct(),__destruct(),__call(),__callStatic(),__get(),__set(),__isset(),__unset(),__sleep(),__w ...
- PHP 中 16 个魔术方法详解
PHP 中 16 个魔术方法详解 前言 PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __constru ...
随机推荐
- DNS详解: A记录,子域名,CNAME别名,PTR,MX,TXT,SRV,TTL
DNS DNS,Domain Name System或者Domain Name Service(域名系统或者域名服务).域名系统为Internet上的主机分配域名地址和IP地址.由于网络中的计算机都必 ...
- winform(记事本--剪切复制等和打开)
- 测试开发之Django——No5.Django项目的部署(CentOS7+nginx)
配置环境:CentOS7 1.安装python3环境 默认的CentOS7系统中,会安装python2.7的版本,由于Django2.0并不支持python2.7的版本,所以我们需要自己在系统中安装p ...
- 性能测试八:jmeter进阶之beanshell
* BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; * BeanShell是一种松散类型的脚本语言(这点和JS类似); * BeanShell是用Java ...
- python3 读取文件跳过文件第一行内容
Python编程时,经常需要跳过第一行读取文件内容.比较容易想到是为每行设置一个line_num,然后判断line_num是否为1,如果不等于1,则进行读取操作.相应的Python代码如下: #inp ...
- 关于Bootstrap自定义图标
1.网站:http://fontello.com/(可能是网站本身原因,总是加载很慢,需要等待一下) 2.eps格式即AI文件,所需画布大小是512*512的,且需要布满整个画布,否则存储出来的图标显 ...
- 步步为营-11-List<T>泛型的简单练习
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- oracle查询出来的时间吸附为每5min
to_char(PACKET_TIME,'yyyy-mm-dd hh24:')||floor(to_char(PACKET_TIME,'mi')/5 )*5||':00' as start_time, ...
- django url解析中的ResolverMatch
了解这个问题,源于昨天开发时遇到的一个小小的问题. 问题描述如下: 比如,我有一个url,定义如下: path('res_edit/<app>/<env>/', AppResE ...
- Storm(三)Storm的原理机制
一.Storm的数据分发策略 1. Shuffle Grouping 随机分组,随机派发stream里面的tuple,保证每个bolt task接收到的tuple数目大致相同. 轮询,平均分配 2. ...