yourphp修改thinkphp记录
### yourphp对thinkphp的改动分析 #### 一、概述 YourPHP是在ThinkPHP基础上进行二次开发的一个PHP框架。通过对核心文件的修改,YourPHP在一定程度上增强了原框架的功能,并根据实际需求进行了定制化调整。本文将从几个关键点出发,深入分析YourPHP对ThinkPHP的改动。 #### 二、RUNTIME_PATH的定义 在`Core\Core.php`文件的第21行,可以看到YourPHP对`RUNTIME_PATH`的定义进行了调整。原本的ThinkPHP将其定义为`APP_PATH . 'Runtime/'`,而YourPHP则改为了`'./Cache/'`。这一改动意味着运行时文件的存放路径发生了变化,由应用目录下的`Runtime`文件夹移动到了根目录下的`Cache`文件夹。 **意义:** - 更简洁的路径设置,便于管理和维护。 - 减少了对应用目录的依赖,使得项目结构更为清晰。 - 提高了缓存文件管理的便捷性。 #### 三、VENDOR_PATH的处理方式 在`Core\Common\runtime.php`文件中,第84行原始ThinkPHP使用`set_include_path()`函数来添加`VENDOR_PATH`到包含路径中,而在YourPHP中,这部分逻辑被保留并进行了扩展。 **YourPHP的改动:** - 在第152行之后增加了一段代码,用于检查是否存在特定常量`YP_KEY`。如果存在,则会从请求中获取域名,并与预先定义好的密钥进行匹配。若匹配成功,则定义`YP_KEY`;否则,定义为`nokey`。 - 第155行之后的代码,用于读取一个名为`key.php`的文件,并基于域名和密钥进行安全验证。 **意义:** - 增强了框架的安全性,通过域名和密钥的验证,确保了只有合法请求才能访问到系统内部。 - 实现了对第三方库路径的动态管理,提高了系统的灵活性。 #### 四、主题和模板的自定义 在`Core\Lib\Core\App.class.php`文件中,YourPHP对主题和模板的定义进行了调整。原始ThinkPHP直接定义了`THEME_NAME`,而YourPHP则增加了更多的自定义选项。 **YourPHP的改动:** - 第69行取消了直接定义`THEME_NAME`的做法。 - 第70行至77行新增了逻辑,根据是否需要创建静态HTML页面来动态定义主题名称。 **意义:** - 提供了更灵活的主题切换机制。 - 支持了静态页面的快速生成,对于提高网站性能有显著作用。 - 使得框架更加适应不同的应用场景,满足了多样化的项目需求。 #### 五、数据库字段名的验证规则 在`Core\Lib\Core\Db.class.php`文件中,YourPHP对数据库字段名的验证规则进行了扩展。 **YourPHP的改动:** - 将原有的正则表达式`'/^[A-Z_\|\&\-.a-z0-9]+$/``修改为`'/^[A-Z_\|\&\-.a-z0-9\(\)\,]+$/`,增加了对括号和逗号的支持。 **意义:** - 扩展了字段名的命名规则,使得字段名可以包含更多特殊字符。 - 提高了数据库操作的灵活性,适用于更复杂的业务场景。 #### 六、配置项的类型检查 在`Core\Lib\Core\Model.class.php`文件中,YourPHP对配置项的类型进行了检查。 **YourPHP的改动:** - 在第1227行,将原有条件`!empty($config) && false === strpos($config, '/')`修改为`!empty($config) && is_string($config) && false === strpos($config, '/')`。 **意义:** - 增加了对字符串类型的显式检查,确保了传入参数的有效性。 - 避免了因传入非字符串类型而导致的运行时错误,提高了程序的健壮性。 ### 总结 通过上述分析可以看出,YourPHP在ThinkPHP的基础上进行了一系列优化和改进,旨在提高框架的性能、安全性和灵活性。这些改动不仅体现了开发者对框架的深刻理解,也为实际项目的部署提供了更多选择和支持。
\Core\Core.php
第21行:
原ThinkPHP
defined('RUNTIME_PATH') or define('RUNTIME_PATH',APP_PATH.'Runtime/');
Yourphp
defined('RUNTIME_PATH') or define('RUNTIME_PATH','./Cache/');
------------------------------------------------------------------
\Core\Common\runtime.php
第84行: 原ThinkPHP
set_include_path(get_include_path() . PATH_SEPARATOR . VENDOR_PATH);
Yourphp
不存在
第142行:原ThinkPHP
$content .= 'set_include_path(get_include_path() . PATH_SEPARATOR . VENDOR_PATH);';
Yourphp
不存在
Yourphp 第152行 增加以下内容
152 }
153 if(defined('YP_KEY')) $content = preg_replace('/defined\(\'YP_KEY\'\) or define\(\'YP_KEY\',\'(.+?)\'\)\;/','',$content);
154 if(is_file(__ROOT__.'key.php')){
155 preg_match('/[\w][\w-]*\.(?:com\.cn|com|cn|co|net|org|gov|cc|biz|info)(\/|$)/isU', $_REQUEST['host'], $domain);
156 $domain = $domain[0];
157 include __ROOT__.'key.php';
158 if(sha1($domain.$key)==$code){
- 神鸢鹤戾2015-03-10东西不咋的 用thinkphp写的 但是 入口主函数 被用zend加密 想要高二次开发 基本没戏!
- qq_240380512017-12-23下下来学习下
- 飞飞卡卡2013-03-13很简单,基本没什么修改
- 粉丝: 3
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 9a0f3e58cbb2b13855df377b794dc336.jpg
- (源码)基于SpringBoot和Vue的停车场管理系统.zip
- 中国地质大学(武汉)地理信息系统(GIS)考试试题整理.doc
- (源码)基于Redis的内存数据库管理系统.zip
- rv1126-rv1109-add-camera-gc2053-gc4653-②
- C#.NET酒店宾馆客房管理系统源码数据库 SQL2008源码类型 WinForm
- visual-modflow-4.X使用教程.pdf
- 水仙花数的四种实现方式(C/Java/Python/JavaScript)
- (源码)基于TensorflowLite的AI狗识别系统.zip
- (源码)基于Qt框架的3D点云与模型可视化系统.zip