- __call/__callStatic
class A { public function test () { static::who(); A::who(); self::who(); $this->who(); } /*私有方法*/ private function test2(){ } public static function __callStatic($a, $b) { var_dump('A static'); } public function __call($a, $b) { var_dump('A call'); } } class B extends A { public function test(){ parent::test3(); parent::__construct(); } } $a = new A; $a->test(); // 输出4个 A call A::test1(); // A static $a->test2();// A call $b = new B; $b->test();//A call Fatal error:... 构造方法不存在不会调用__call
- __call参数
<?php class A { public function test () { static::who(); A::who(); self::who(); $this->who(); } /*私有方法*/ private function test2(){ echo '<br>调用不可访问的静态方法时,输出我'; } public static function __callStatic($name, $params) { echo('静态方法'.$name.'不存在,参数为'.implode('、', $params)); self::test2(); } public function __call($name, $params) { echo('方法'.$name.'不存在,参数为'.implode('、', $params)); } } $a = new A; A::test1('one', 'two'); //静态方法test1不存在,参数为one、two //调用不可访问的静态方法时,输出我 实现重载 $a->test2('one', 'two');// 方法test2不存在,参数为one、two
php __call与__callStatic
最新推荐文章于 2025-06-04 09:07:09 发布