迅睿CMS框架是一款PHP8高性能·简单易用的CMS开源开发框架,基于MIT开源许可协议发布,免费且不限制商业使用,是免费开源的产品,以万端互联为设计理念,支持的微信公众号、小程序、APP客户端、移动端网站、PC网站等多终端式管理系统。
联系官方销售客服
1835022288
028-61286886
问题背景:
我现在的业务需要涉及修改,dayrui/Fcms/Core中的文件,我现在想通过继承的方式来完成修改,我该如何操作。
public static function V() { if (!is_object(static::$view)) { static::$view = new View(); } return static::$view;}
/** * 查询缓存 */public function _query($sql, $db, $cache, $all = TRUE){ // 缓存存在时读取缓存文件 $cname = md5($db . $sql . dr_now_url()); if (SYS_CACHE && $cache && $data = \Phpcmf\Service::L('cache')->get_data($cname)) { return $data; } $mysql = \Phpcmf\Service::M()->db; if ($db) { $mysql = \Config\Database::connect($db, false); } // 执行SQL $query = $mysql->query($sql); if (!$query) { return 'SQL查询解析不正确:' . $sql; } // 查询结果 $data = $all ? $query->getResultArray() : $query->getRowArray(); // 开启缓存时,重新存储缓存数据 $cache && \Phpcmf\Service::L('cache')->set_data($cname, $data, $cache); return $data;}
<?php namespace Jqx\Core;use Phpcmf\Service;class View extends \Phpcmf\View{ public $_jqx_module = ""; public function rewrite_url($url) { //TODO 此处通过调用标签所在的Module进行url的伪静态 return $this->_jqx_module; } public function list_tag($_params) { $params = explode(' ', $_params); foreach ($params as $param) { $mapArray = explode("=", $param); if ($mapArray[0] == 'module') { $this->_jqx_module = $mapArray[1]; break; } } if ($this->_jqx_module == "MOD_DIR") { $this->_jqx_module = MOD_DIR; } elseif ($this->_jqx_module == "APP_DIR") { $this->_jqx_module = APP_DIR; } return parent::list_tag($_params); // TODO: Change the autogenerated stub } public function _query($sql, $db, $cache, $all = TRUE) { $return_data = []; // 缓存存在时读取缓存文件 $cname = md5($db . $sql . dr_now_url()); if (SYS_CACHE && $cache && $data = \Phpcmf\Service::L('cache')->get_data($cname)) { $return_data = $data; } if (empty($return_data)) { $mysql = \Phpcmf\Service::M()->db; if ($db) { $mysql = \Config\Database::connect($db, false); } // 执行SQL $query = $mysql->query($sql); if (!$query) { return 'SQL查询解析不正确:' . $sql; } // 查询结果 $data = $all ? $query->getResultArray() : $query->getRowArray(); // 开启缓存时,重新存储缓存数据 $cache && \Phpcmf\Service::L('cache')->set_data($cname, $data, $cache); $return_data = $data; } $new_return_data = []; if (!empty($return_data)) { foreach ($return_data as $k => $v) { if (!empty($v['url'])) { $v['url'] = $this->rewrite_url($v['url']); $new_return_data[$k] = $v; } else { $new_return_data[$k] = $v; } } return $new_return_data; } return $return_data; }}
class Service
/** * 模板视图对象实例 * * @var object */public static function V() { if (!is_object(static::$view)) { static::$view = new View();//这个View,是上面的那个View } return static::$view;}
function rewrite_url($_jqx_module, $url) { //TODO 此处通过调用标签所在的Module进行url的伪静态 return $_jqx_module; }
1
感谢再次跟进回复 {module module=MOD_DIR page=1 pagesize=20 urlrule=index.php?s=zixun&c=search&catid=1&page=[page] return=zixun} {$zixun[url]=rewrite_url(MOD_DIR,$zixun.url)} 这个做法我已经实现了 我现在想要修改的原因是,想从数据根源通过直接处理,完成url的重写解析 其次还想在和您交流一下,面对独立模块千万数据的时候,如果想要完成伪静态的内容url,该如何更新
2
好,那就听您的建议,感谢您的回复和指导。