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

栏目: PHP · 发布时间: 6年前

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

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

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

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

打包流程,以 public.php 为例。

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

现在功能有限,仅支持 同一个目录(因为我只用到了单目录),如果有哪位大神 在此基础上修改了多目录版本,请一定要分享一分给我。

至于用处,除了 方便维护多个项目(A项目、B项目)或同一个项目的多个版本(比如:VIP版、普通版),最大的用处,可以用于商业版程序混淆加密。比如商业软件:index.php,product.php 每个文件都打包混淆加密,每个文件都包含了所有的代码(几万行)。破解者解密后,看到几万行代码,上百个函数(可能都还有用),同一个功能,各个文件内的函数名都不一致,会哭死的。。。。

测试包下载地址:

one.php 源代码: http://www.miaoqiyuan.cn/products/onephp.rar

<?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');

以上所述就是小编给大家介绍的《多项目 函数库、类库 统一为一个版本的方法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

重新定义管理

重新定义管理

[美]布赖恩·罗伯逊 / 中信出版社 / 2015-10-1 / 45

还没听说过合弄制?你一定会听说的。终于,迎来了一本合弄制创建者的著作,讲解了这一公司经营方式的革命性新系统及其实施方法。 今天的商界,情况瞬息万变。但在绝大多数组织中,最具资格响应变化的人们却几乎都没有权力去做出改变。相反,他们不得不遵守那些由领导们设立的亘古不变的战略,而且这些领导们仍然相信“预测和控制”才是有效管理的关键。 合弄制向你展示了怎样让组织中工作的每一个人都成为一名领导,......一起来看看 《重新定义管理》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

SHA 加密
SHA 加密

SHA 加密工具