PHP 重载方法 __call() __call() 方法用于监视错误的方法调用。 __call()(Method overloading) 为了避免当调用的方法不存在时产生错误,可以使用 __call() 方法来避免。该方法在调用的方法不存在时会自动调用,程序仍会继续执行下去。 语法: function __call(string $function_name, array $arguments) { ...... } 该方法有两个参数,第一个参数 $function_name 会自动接收不存在的方法名,第二个 $args 则以数组的方式接收不存在方法的多个参数。 在类里面加入: function __call($function_name, $args) { echo "你所调用的函数:$function_name(参数:<br />"; var_dump($args); echo ")不存在!"; } 当调用一个不存在的方法时(如 test() 方法): $p1=new Person(); $p1->test(2,"test"); 输出的结果如下: 你所调用的函数:test(参数: array(2) { [0]=>int(2) [1]=>string(4) "test" } )不存在!
发表评论
-
yii2 引进css
2015-12-09 16:22 0$this->registerCssFile(STATI ... -
GridView
2015-10-29 10:18 0<?= GridView::widget ... -
使用pack 填充空白符 unpack解
2015-08-10 15:43 568<?php $book = array(array ... -
php lookandsay
2015-08-07 18:01 478<?php function lookands ... -
php strpos 为什么没找到要用 ===false 做判断
2015-08-07 14:36 761如果这个字符串中没有找到相应的子字符串 就返回false ... -
php 获取当前浏览器信息
2015-08-07 11:05 04.10 以前 是$HTTP_SERVER_VARS ... -
php 遍历一个文件夹下面的子文件
2015-08-05 15:57 560function my_scandir($dir) ... -
什么是HMVC
2015-07-31 11:01 446HMVC模式即Hierarchical-Model-V ... -
PHP 通过代理发送电子邮件 mail()
2015-06-15 16:19 0/** * 邮件发送类 * 支持发送纯文本 ... -
unsoap
2015-06-03 16:30 01. 首先,去 http://sourceforge.net/ ... -
file_get_contents 和 curl 性能比较
2015-06-03 11:57 0$timeStart = microtime_float(); ... -
PHP获取 当前页面名称、主机名、URL完整地址、URL参数、获取IP
2015-05-29 14:07 0PHP获取 当前页面名称、 ... -
php MySQL Create Database 创建数据库
2014-10-15 16:04 829MySQL Create Database 创 ... -
php 连接数据库
2014-10-15 16:05 366MySQL 连接与管理 让 PHP 支持 MySQL ... -
PHP 对象的存储与传输(序列化 serialize 对象)
2014-10-15 16:06 2340PHP 对象的存储与传输(序列化 serialize ... -
PHP 对象克隆 clone 关键字与 __clone() 方法
2014-10-15 16:07 1181PHP 对象克隆 clone 关键字与 __clone ... -
PHP 抽象方法与抽象类 abstract 关键字
2014-10-15 16:07 530PHP 抽象方法与抽象类 abstract 关键字 ... -
PHP 重载
2014-10-23 11:07 340PHP 重载 一个类中的方法与另一个方法同名,但 ... -
PHP 特殊方法 __set()、__get()、__isset() 与 __unset()
2014-10-13 15:37 0PHP 特殊方法 __set() ... -
PHP 常量(const)
2014-10-13 15:32 0PHP 常量(const) 常量 const 在类 ...
相关推荐
虽然PHP不支持真正的函数或方法重载,但是可以通过魔术方法(__call)来模拟这一特性。`__call`是PHP中的一个魔术方法,当尝试调用一个不存在的类方法时,会自动调用`__call`方法。这使得我们可以在类中动态地处理方法...
return call_user_func_array(array($this, $name), $args); } ``` 在`Person`类中,`__call()`方法被用来根据传入参数的个数判断调用哪个构造函数。通过`func_num_args()`获取参数个数,`func_get_args()`获取...
但是,可以在PHP的类中运用__call()方法来实现方法重载。当调用一个类中并不存在的方法时,会自动调用__call()方法,其形式为__call($name,$arguments) 其中$name是方法的名称,$arguments是一个数组类型的参数。 ...
return call_user_func_array(array($this, $name), $arg); } public function __construct() { $num = func_num_args(); $args = func_get_args(); switch ($num) { case 0: $this->__call('__construct...
首先,我们来看一个简单的例子,利用默认参数和`func_get_args()`及`call_user_func_array()`来实现函数重载: ```php function rewrite() { $args = func_get_args(); if (func_num_args() == 1) { func1($args...
在使用这些魔术方法时,需要注意的是,为了保持代码的清晰和避免潜在的命名冲突,不建议使用双下划线开头的名称来命名自己定义的普通方法,除非是为了重载已有的魔术方法。这些魔术方法都是PHP语言内置定义的特殊...
return call_user_func_array($method, $args); } else { throw new Exception("Method '$methodName' does not exist."); } } // 注册重载方法 function registerMethod($methodName, $callback) { $this-...
不过,PHP通过魔术方法__call()提供了一种间接实现方法重载的方式。当调用一个不存在的方法时,__call()方法会被自动调用,程序员可以在__call()方法中定义自己的逻辑来区分不同的方法调用情况。 __call()方法需要...
在PHP中,尽管它是一种弱类型的语言,不像Java那样直接支持函数或方法的重载,但我们可以采用一些技巧来模拟重载的效果。这里我们将详细探讨四种常用的PHP实现重载的方法。 1. **弱类型和自动类型转换** PHP的弱...
总结来说,虽然PHP本身不支持方法重载,但是可以通过`__call`魔术方法来模拟实现类似方法重载的效果。这为开发者提供了一定的灵活性来控制对象的行为,并且可以在不影响类的使用者的情况下,增加新功能或调整现有...
PHP 不直接支持方法重载,但可以通过魔术方法`__call()`模拟实现。 9. 静态成员(Static Members)属于类而不是类的实例,可以直接通过类名访问,不受对象实例的影响。 10. `final`关键字用于标记不能被继承的类或...
- 方法重载(Overloading):PHP不支持方法名的重载,但可以通过魔术方法`__call()`和`__callStatic()`实现类似效果。 - 方法重写(Override):子类可以覆盖父类的方法,实现不同的行为。 - 接口(Interface):...
call_user_func_array(array($this, $f), $args); } } } function f1($a1) { echo "1个参数 " . $a1 . " "; } function f2($a1, $a2) { echo "2个参数 " . $a1 . "," . $a2 . " "; } function...
PHP 支持通过 `__call()` 方法实现重载。 ```php class MethodOverloading { public function __call($method, $args) { echo "Called method $method with arguments: "; print_r($args); } } $obj = new ...
在PHP中,可以通过魔术方法`__call`来实现方法的动态调用。 #### 14. 访问类型 PHP中有三种访问类型:`public`、`protected`和`private`,分别表示公开、受保护和私有。 #### 15. 静态成员的使用 静态成员(变量...
php规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法。 PHP中的魔术方法有 :__construct, __destruct , __call, __callStatic,__get, __set, ...