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 相关文章推荐
php生成EXCEL的东东
Oct 09 PHP
php+javascript的日历控件
Nov 19 PHP
PHP排序之二维数组的按照字母排序实现代码
Aug 13 PHP
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
php的ZipArchive类用法实例
Oct 20 PHP
PHP中SESSION的注销与清除
Apr 16 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
PHP页面输出时js设置input框的选中值
Sep 30 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 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
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
2016/07/07 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
Python 中的with关键字使用详解
2016/09/11 Python
Python 3中的yield from语法详解
2017/01/18 Python
详解django中使用定时任务的方法
2018/09/27 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
python监控进程状态,记录重启时间及进程号的实例
2019/07/15 Python
Python字典实现伪切片功能
2020/10/28 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
你的自行车健身专家:FaFit24
2016/11/16 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
技校毕业生自荐信
2014/06/03 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书