PHP 实现重载
方法一:自定义一个方法,根据传入参数的数量,对应到某一个方法中
class Overloading{ public function test() { $nums = func_num_args(); //传入参数数量 $args = func_get_args(); //传参数组 switch ($nums) { case 1: $this->test1($args[0]); break; case 2: $this->test2($args[0], $args[1]); break; default: throw new Exception("Not Found Action"); break; } } private function test1($arg0) { echo __METHOD__; } private function test2($arg0, $arg1) { echo __METHOD__; } } $obj = new Overloading(); $obj->test(1); $obj->test(1,2);
方法二:使用__call魔术方法,根据传入参数的数量,回调调用其他一个方法
class Overloading{
//定义魔术方法 public function __call($name, $args) { if($name == 'test'){ switch (count($args)) { case 1: call_user_func_array([$this,'test1'], $args); break; case 2: call_user_func_array('self::test2', $args); break; default: throw new Exception("Not Found Action"); break; } } } //静态魔术方法 public static function __callStatic($name, $args) { } private function test1($arg0) { echo __METHOD__; } private function test2($arg0, $arg1) { echo __METHOD__; } } $obj = new Overloading(); $obj->test(1); $obj->test(1,2);
- 上一篇 »Java面向对象之继承、构造方法、重写、重载
- 下一篇 »javascript中的方法重载