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的ob_start();控制您的浏览器cache!
Feb 14 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
php删除指定目录的方法
Apr 03 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
Jul 06 PHP
php进程间通讯实例分析
Jul 11 PHP
thinkPHP交易详情查询功能详解
Dec 02 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
Mar 25 PHP
PHP时间处理类操作示例
Sep 05 PHP
PHP chop()函数讲解
Feb 11 PHP
php测试kafka项目示例
Feb 06 PHP
PHP使用Http Post请求发送Json对象数据代码解析
Jul 16 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生成月历代码
2007/06/14 PHP
开源SNS系统-ThinkSNS
2008/05/18 PHP
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
PHP字典树(Trie树)定义与实现方法示例
2017/10/09 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
JS定时器实例
2013/04/17 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
vue车牌号校验和银行校验实战
2019/01/23 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
python爬虫之验证码篇3-滑动验证码识别技术
2019/04/11 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
工程开工庆典邀请函
2014/02/01 职场文书
中专毕业生自我鉴定
2014/02/02 职场文书
工程师岗位职责规定
2014/02/26 职场文书
中职招生先进个人材料
2014/08/31 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
高三英语复习计划
2015/01/19 职场文书
初中历史教学反思
2016/02/19 职场文书
《穷人》教学反思
2016/02/19 职场文书