欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
CodeIgniter4 中传统路由模式 实现退回默认控制器的功能 csrf-token写在head的meta里面怎么做到防止csrf
未知  通过扩展CodeIgniter 4 核心类的方式实现SQL执行数量的统计功能
[ 发布日期:3年前 (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 = null, bool $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 于 3年前 (2023-12-03) 编辑]
[ 分类:其它运维与编程  | 查看:1629 ]

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

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