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 相关文章推荐
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
php 生成随机验证码图片代码
Feb 08 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
php中的路径问题与set_include_path使用介绍
Feb 11 PHP
PHP判断是否有Get参数的方法
May 05 PHP
浅谈PHP中JSON数据操作
Jul 01 PHP
php用正则判断是否为数字的方法
Mar 25 PHP
php 运算符与表达式详细介绍
Nov 30 PHP
详解laravel安装使用Passport(Api认证)
Jul 27 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 PHP
PHP tp5中使用原生sql查询代码实例
Oct 28 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
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
javascript 进度条 实现代码
2009/07/30 Javascript
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
python中如何进行连乘计算
2020/05/28 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
一些高难度的SQL面试题
2016/11/29 面试题
.net开发工程师面试题
2014/02/25 面试题
Javascript如何发送一个Ajax请求
2015/01/26 面试题
超市优秀员工事迹材料
2014/05/01 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
法人委托书的范本格式
2014/09/11 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
总经理岗位职责
2015/02/04 职场文书
部队2015年终工作总结
2015/04/02 职场文书
z-index不起作用
2021/03/31 HTML / CSS
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android
关于对TypeScript泛型参数的默认值理解
2022/07/15 Javascript