PHP合并静态文件详解


Posted in PHP onNovember 14, 2014

配置PHP.ini

更改配置项(必须)auto_prepend_file = "C:\xampp\htdocs\auto_prepend_file.php"

更改配置项(可选)allow_url_include = On

auto_prepend_file.php文件内容

<?php

/**

 * 引入static文件

 * @param {array|string} 相对路径

 * @param {string} 当前执行脚本所在的路径__FILE__

 *

 */

function import_static($files, $path=NULL){

    // 更改当前脚本的执行路径

    $old_dir = getcwd();

    $tmp_dir = (isset($path)) ? dirname($path): dirname(__FILE__);

    chdir($tmp_dir);

    // 整理包含文件

    if (!is_array($files)) {

        $tmp = array();

        $tmp[] = $files;

        $files = $tmp;

    }

    // 发送头信息

    if (isset($files[0])) {

        if (stripos($files[0], '.js') !== false) {

            $header_str = 'Content-Type:   text/javascript';

        } elseif (stripos($files[0], '.css') !== false) {

            $header_str = 'Content-Type:   text/css';

        }

        if (!ob_get_contents()) {

            header($header_str);

        }

    }

    // 引入包含文件

    foreach($files as $key=>$value) {

        require_once($value);

    }

    // 改回当前脚本的执行路径

    chdir($old_dir);

}

?>

使用方法

"a.js"、"b.js"和"../c.js"是待合并的JS文件,将其合并为base.js.php,则base.js.php中的代码如下:

<?php

    import_static(array(

        'a.js',

        'b.js',

        '../c.js',

        '../moduleB/all.js.php'    // 也可引用.php文件

    ), __FILE__);

?>

在HTML页面中使用<script type="text/javascript" src="base.js.php"></script>即可引入。

产品上线前,使用批处理文件进行处理,主要做两方面的工作
1.将"*.js.php"输出到"*.js"文件,并删除"*.js.php"。命令行:php *.js.php > *.js
2.将HTML页面中对"*.js.php"的引用替换为"*.js"。preg_replace()

PS:import_static函数解决了PHP中include()处理相对路径的问题。

以上就是本文的全部内容了,更详细的信息请期待后续文章

PHP 相关文章推荐
对Session和Cookie的区分与解释
Mar 16 PHP
基于php缓存的详解
May 15 PHP
浅析php学习的路线图
Jul 10 PHP
php 读取文件头判断文件类型的实现代码
Aug 05 PHP
php向js函数传参的几种方法
Aug 10 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
CodeIgniter扩展核心类实例详解
Jan 20 PHP
wordpress网站转移到本地运行测试的方法
Mar 15 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
Mar 25 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 PHP
PHP架构及原理知识点详解
Dec 22 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 #PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
Nov 14 #PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 #PHP
php使用date和strtotime函数输出指定日期的方法
Nov 14 #PHP
php获取url参数方法总结
Nov 13 #PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 #PHP
php数组保存文本与文本反编成数组实例
Nov 13 #PHP
You might like
PHP.MVC的模板标签系统(三)
2006/09/05 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
js substr、substring和slice使用说明小记
2011/09/15 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
2013/08/02 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
python中的lambda表达式用法详解
2016/06/22 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
python中的print()输出
2019/04/12 Python
Python函数和模块的使用总结
2019/05/20 Python
对Python生成器、装饰器、递归的使用详解
2019/07/19 Python
python实现udp传输图片功能
2020/03/20 Python
详解Python IO口多路复用
2020/06/17 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
python import 上级目录的导入
2020/11/03 Python
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
旅游管理本科生求职信
2013/10/14 职场文书
药学专业个人的自我评价
2013/12/31 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
体育专业自荐书
2014/05/29 职场文书
国际贸易求职信
2014/07/05 职场文书
给朋友的道歉短信
2015/05/12 职场文书
党员转正意见怎么写
2015/06/03 职场文书