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中使用XML
Oct 09 PHP
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
javascript,php获取函数参数对象的代码
Feb 03 PHP
如何用php获取程序执行的时间
Jun 09 PHP
显示程序执行时间php函数代码
Aug 29 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
php实现在线通讯录功能(附源码)
May 13 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 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 正则学习实例
2008/07/30 PHP
php的ajax简单实例
2014/02/27 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
python抓取网页图片示例(python爬虫)
2014/04/27 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
Django 路由层URLconf的实现
2019/12/30 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
商场中秋节广播稿
2014/01/17 职场文书
八项规定整改方案
2014/02/21 职场文书
消防安全员岗位职责
2014/03/10 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
爱的承诺书
2015/01/20 职场文书
Python编写车票订购系统 Python实现快递收费系统
2022/08/14 Python