欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
CodeIgniter4 中传统路由模式 实现退回默认控制器的功能 csrf-token写在head的meta里面怎么做到防止csrf
未知  通过扩展CodeIgniter 4 核心类的方式实现SQL执行数量的统计功能
[ 发布日期:1年前 (2023-11-26) ]   [ 来自:本站原创 ] [分类:其它运维与编程]
在之前的帖子 给 CodeIgniter 4 增加SQL执行数量的统计功能 中我们通过修改系统核心类文件实现了该功能。

但是这样不方便今后进行框架的升级,需要每次升级完成后都再修改一面。

这里将采用扩展核心类的方式来实现该功能,这样不影响今后的升级。

首先在 App\Libraries 目录中添加扩展类 CodeIgniter.php ,代码如下:
[复制到剪贴板]

<?php
namespace App\Libraries;
use 
CodeIgniter\Events\Events;
use 
CodeIgniter\CodeIgniter as BaseCodeIgniter;
/**
 * 扩展核心类实现 SQL 执行数的统计功能
 */ 
class CodeIgniter extends BaseCodeIgniter
{
    
/**
     * @var int|null  变量SQL执行次数
     */
    
protected $sql_queries 0;
    
/**
     * 函数 统计SQL执行次数   
     */ 
    
public function collectDBQuery($query){
        
$this->sql_queries++;
    }

    public function 
initialize(){
        
//调用父类的方法,确保功能完整
        
parent::initialize();
        
//增加扩展初始化代码  注册SQL统计函数
        
Events::on('DBQuery', [$this'collectDBQuery']);
    }
    
/**
     * 增加替换  sql_queries 标签
     */
    
public function displayPerformanceMetrics(string $output): string
    
{
        
// 替换  sql_queries 标签
        
$output str_replace('{sql_queries}'$this->sql_queries$output);
        
// 调用父类的功能
        
return parent::displayPerformanceMetrics($output);
    }
}
 




然后通过服务配置文件,将我们扩展的核心类注册到系统中
需要修改的文件是 App\Config\Services.php
在文件中添加如下函数,完成注册:

[复制到剪贴板]

/**
     * 扩展 CodeIgniter核心类
     * @return CodeIgniter
     */
    
public static function codeigniter(?App $config nullbool $getShared true)
    {
        if (
$getShared) {
            return static::
getSharedInstance('codeigniter'$config);
        }

        
$config ??= config(App::class);

        return new 
\App\Libraries\CodeIgniter($config);
    }
 


如果文章对您有帮助,给个赞赏吧!
引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/271
复制引用地址https://www.rickw.cn/trackback/271/GBK
[本日志由 rick 于 1年前 (2023-12-03) 编辑]
[ 分类:其它运维与编程  | 查看:600 ]

暂时没有评论,快来发表一个评论吧。
发表评论
作者:   用户:[访客] 
评论:

表  情
禁止表情 | 禁止UBB | 禁止图片 | 识别链接
对不起,你没有权限上传附件!
验证:
 
PoweredBy R-Blog V1.00 © 2004-2025 WWW.RICKW.CN, Processed in second(s) , 7 queries    京ICP备17058477号-5