php __call and __callStatic

本文详细介绍了PHP5中对象新增的专用方法__call()和__callStatic(),阐述了它们在对象上下文与静态上下文中的触发机制,并通过实例演示了如何使用这些方法处理不可访问的方法调用。

PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。

 

__call() is triggered when invoking inaccessible methods in an object context.

__callStatic() is triggered when invoking inaccessible methods in a static context.

 

<?php
class MethodTest {
    public function 
__call($name$arguments) {
        
// Note: value of $name is case sensitive.
        
echo "Calling object method '$name' "
             
implode(', '$arguments). "\n";
    }

    
/**  As of PHP 5.3.0  */
    
public static function __callStatic($name$arguments) {
        
// Note: value of $name is case sensitive.
        
echo "Calling static method '$name' "
             
implode(', '$arguments). "\n";
    }
}

$obj = new MethodTest;
$obj->runTest('in object context');

MethodTest::runTest('in static context');  // As of PHP 5.3.0
?>

502 Bad Gateway nginx [root@yfw ~]# cd /www/wwwroot/yfw.szrengjing.com [root@yfw yfw.szrengjing.com]# ./deploy.sh 🔧 开始自动化部署... fatal: not a git repository (or any of the parent directories): .git fatal: not a git repository (or any of the parent directories): .git ℹ️ Git 仓库不存在,跳过拉取 Installing dependencies from lock file Verifying lock file contents can be installed on current platform. Nothing to install, update or remove Generating optimized autoload files > @php think service:discover Succeed! > @php think vendor:publish Succeed! 2 packages you are using are looking for funding. Use the `composer fund` command to find out more! Clear Successed 💡 storage link 已存在 ⚙️ 创建 public/.user.ini 🔐 初始化管理员账户... PHP Fatal error: Uncaught InvalidArgumentException: Undefined db config:mysql in /www/wwwroot/yfw.szrengjing.com/vendor/topthink/think-orm/src/DbManager.php:235 Stack trace: #0 /www/wwwroot/yfw.szrengjing.com/vendor/topthink/think-orm/src/DbManager.php(248): think\DbManager->getConnectionConfig() #1 /www/wwwroot/yfw.szrengjing.com/vendor/topthink/think-orm/src/DbManager.php(220): think\DbManager->createConnection() #2 /www/wwwroot/yfw.szrengjing.com/vendor/topthink/think-orm/src/DbManager.php(203): think\DbManager->instance() #3 /www/wwwroot/yfw.szrengjing.com/vendor/topthink/think-orm/src/DbManager.php(373): think\DbManager->connect() #4 [internal function]: think\DbManager->__call() #5 /www/wwwroot/yfw.szrengjing.com/vendor/topthink/framework/src/think/Facade.php(96): call_user_func_array() #6 Standard input code(6): think\Facade::__callStatic() #7 {main} thrown in /www/wwwroot/yfw.szrengjing.com/vendor/topthink/think-orm/src/DbManager.php on line 235 Fatal error: Uncaught InvalidArgumentException: Undefined db config:mysql in /www/wwwroot/yfw.szrengjing.com/vendor/topthink/think-orm/src/DbManager.php:235 Stack trace: #0 /www/wwwroot/yfw.szrengjing.com/vendor/topthink/think-orm/src/DbManager.php(248): think\DbManager->getConnectionConfig() #1 /www/wwwroot/yfw.szrengjing.com/vendor/topthink/think-orm/src/DbManager.php(220): think\DbManager->createConnection() #2 /www/wwwroot/yfw.szrengjing.com/vendor/topthink/think-orm/src/DbManager.php(203): think\DbManager->instance() #3 /www/wwwroot/yfw.szrengjing.com/vendor/topthink/think-orm/src/DbManager.php(373): think\DbManager->connect() #4 [internal function]: think\DbManager->__call() #5 /www/wwwroot/yfw.szrengjing.com/vendor/topthink/framework/src/think/Facade.php(96): call_user_func_array() #6 Standard input code(6): think\Facade::__callStatic() #7 {main} thrown in /www/wwwroot/yfw.szrengjing.com/vendor/topthink/think-orm/src/DbManager.php on line 235 🔄 重载 PHP-FPM... Job for php-fpm-53.service failed. See "systemctl status php-fpm-53.service" and "journalctl -xe" for details. 🎉 部署完成!访问后台: http://yfw.szrengjing.com [root@yfw yfw.szrengjing.com]#
11-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值