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 相关文章推荐
php5新改动之短标记启用方法
Sep 11 PHP
php URL验证正则表达式
Jul 19 PHP
PHP删除数组中的特定元素的代码
Jun 28 PHP
CI(CodeIgniter)框架配置
Jun 10 PHP
使用Thinkphp框架开发移动端接口
Aug 05 PHP
解读PHP中的垃圾回收机制
Aug 10 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
php投票系统之增加与删除投票(管理员篇)
Jul 01 PHP
PHP使用mysqli操作MySQL数据库的简单方法
Feb 04 PHP
PHP token验证生成原理实例分析
Jun 05 PHP
php定期拉取数据对比方法实例
Sep 22 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
咖啡与水的关系
2021/03/03 冲泡冲煮
PHP数据流应用的一个简单实例
2012/09/14 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
javascript 闭包详解
2015/02/15 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
微信小程序实现循环动画效果
2018/07/16 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
Python中tell()方法的使用详解
2015/05/24 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
python 字符串和整数的转换方法
2018/06/25 Python
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
2019/04/26 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
Django实现分页显示效果
2019/10/31 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
用python批量移动文件
2021/01/14 Python
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
小学后勤管理制度
2014/01/14 职场文书
上课说话检讨书大全
2014/01/22 职场文书
电工工作职责范本
2014/02/22 职场文书
文明社区申报材料
2014/08/21 职场文书
优秀员工事迹材料
2014/12/20 职场文书
祝寿主持词
2015/07/02 职场文书
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL