one.php 多项目、函数库、类库 统一为一个版本的方法


Posted in PHP onAugust 24, 2020

现在 手里 有好几个 项目在进行,每个项目都有部分通用的代码,只想维护一个 函数库、类库,并且每个项目都不想有冗余代码,函数功能更新后,其他项目的函数也需要更新。晚上抽空写了个 简单的打包小脚本:one.php,以后 更新函数或类时,只需要在唯一的 函数库、类库 中更新,其他项目使用 打包后的 php 脚本即可(理论上也能提高PHP的运行速度,只需要加载、分析一个文件)。

因为我的 函数库、类库都在一个目录下,所以没有针对相对路径 做处理(懒),cmd 进入 core 目录,执行 php one.php 即可按规则打包成一个独立的文件,运行效果如下。

核心代码

<?php
/**
 * 类名:One
 * 作者:mqycn
 * 博客:http://www.miaoqiyuan.cn
 * 源码:http://www.miaoqiyuan.cn/p/one-php
 * 说明:多项目 函数库、类库 统一为一个版本的方法
 */
 
class OneFile {
 
  //已经合并的文件
  public static $includes;
 
  //处理一个文件
  public static function run($index_file, $output_file) {
    self::$includes = array();
    self::log('Input', $index_file);
    $output = self::parse($index_file);
    file_put_contents($output_file, self::repair($output));
    self::log('Output', $output_file);
  }
 
  //分析PHP文件
  public static function parse($file) {
    if (empty(self::$includes[$file])) {
      self::log('Append', $file);
      self::$includes[$file] = true;
      $code = file_get_contents($file);
      if (preg_match_all("/(require_once|require|include_once|include)\s+'([^']*)';/", $code, $match)) {
        for ($i = 0; $i < count($match[0]); $i++) {
          $code = str_replace($match[0][$i], self::parse($match[2][$i]), $code);
        }
 
      }
      return $code;
    } else {
      self::log('Ignore', $file);
      return '';
    }
  }
 
  //代码修复
  public static function repair($code) {
    $php_prefix = "<?php\r\n";
    $php_suffix = "\r\n?>";
    $code = str_replace("\n", "\r\n", $code);
    $code = str_replace("\r\r\n", "\r\n", $code);
    $code = str_replace($php_prefix, '', $code);
    $code = str_replace($php_suffix, '', $code);
    for ($i = 0; $i < 5; $i++) {
      $code = str_replace("\r\n\r\n", "\r\n", $code);
    }
    return $php_prefix . $code . $php_suffix;
  }
 
  //输出日志
  public static function log($type, $text, $status = '') {
    if (in_array($type, array('Append', 'Ignore'))) {
      $status = "- ${type}";
      $type = " |-- ";
    } else {
      $type = "${type}:";
    }
    echo "${type} ${text} {$status}\r\n";
  }
}
 
OneFile::run('vip.php', '../vip.php');
OneFile::run('public.php', '../public.php');

到此这篇关于one.php 多项目、函数库、类库 统一为一个版本的方法的文章就介绍到这了,更多相关多项目、函数库、类库统一为一个内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
php ci框架验证码实例分析
Jun 26 PHP
PHP jQuery表单,带验证具体实现方法
Feb 15 PHP
PHP错误和异长常处理总结
Mar 06 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
php实现过滤字符串中的中文和数字实例
Jul 29 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
Laravel中注册Facades的步骤详解
Mar 16 PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 PHP
PHP执行普通shell命令流程解析
Aug 24 #PHP
PHP连接SQL server数据库测试脚本运行实例
Aug 24 #PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
Aug 24 #PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 #PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
Aug 20 #PHP
Laravel相关的一些故障解决
Aug 19 #PHP
聊聊 PHP 8 新特性 Attributes
Aug 19 #PHP
You might like
php中的MVC模式运用技巧
2007/05/03 PHP
php visitFile()遍历指定文件夹函数
2010/08/21 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
js控制容器隐藏出现防止样式变化的两种方法
2014/04/25 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
web前端设计师们常用的jQuery特效插件汇总
2014/12/07 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
Python通过解析网页实现看报程序的方法
2014/08/04 Python
python实现简单登陆流程的方法
2018/04/22 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
行政文员岗位职责
2013/11/08 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
爱国主义演讲稿
2014/05/07 职场文书
养成教育经验材料
2014/05/26 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
中学校园广播稿
2015/08/18 职场文书
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python