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 相关文章推荐
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
php生成excel文件的简单方法
Feb 08 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
Yii实现多按钮保存与提交的方法
Dec 03 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
php随机获取金山词霸每日一句的方法
Jul 09 PHP
PHP使用逆波兰式计算工资的方法
Jul 29 PHP
php给图片添加文字水印方法汇总
Aug 27 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
PHP文件操作实例总结【文件上传、下载、分页】
Dec 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
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
详解获取jq ul第一个li定位的四种解决方案
2016/11/23 Javascript
原生js实现放大镜
2017/02/20 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
在Python中定义和使用抽象类的方法
2016/06/30 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
股东合作协议书
2014/04/14 职场文书
勾股定理课后反思
2014/04/26 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js