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

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

内容简介:现在 手里 有好几个 项目在进行,每个项目都有部分通用的代码,只想维护一个 函数库、类库,并且每个项目都不想有冗余代码,函数功能更新后,其他项目的函数也需要更新。晚上抽空写了个 简单的打包小脚本: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');

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

查看所有标签

猜你喜欢:

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

共享经济大趋势

共享经济大趋势

倪云华 虞仲轶 / 2016-1-1 / 49.00

2015年互联网界乃至整个商界的最热门字眼,恐怕就是“共享经济”了。共享经济模式正以前所未有的速度与规模席卷全球。那么,共享经济为什么会产生?其本质是什么?共享经济会为我们带来什么价值?成功的共享经济商业模式是怎样的?如何管理和运作一家共享经济企业?在未来,共享经济还将面临哪些挑战?共享经济的下一个发展机会在哪里?传统经济又该如何应对? 作为国内第一本系统性阐述共享经济的书籍,本书通过对全球......一起来看看 《共享经济大趋势》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具