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+java实现自动新闻滚动窗口
Oct 09 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
一波PHP中cURL库的常见用法代码示例
May 06 PHP
php连接oracle数据库的核心步骤
May 26 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
PHP实时统计中文字数和区别
Feb 28 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 PHP
php的lavarel框架中join和orWhere的用法
Dec 28 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生成便于打印的网页
2006/10/09 PHP
从Web查询数据库之PHP与MySQL篇
2009/09/25 PHP
php实现评论回复删除功能
2017/05/23 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
jquery处理json对象
2014/11/03 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
Python下singleton模式的实现方法
2014/07/16 Python
Python线程的两种编程方式
2015/04/14 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
python tkinter基本属性详解
2019/09/16 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
一套软件测试笔试题
2014/07/25 面试题
How TDD works
2012/09/30 面试题
DELPHI中如何调用API,可举例说明
2014/01/16 面试题
空中乘务员岗位职责
2014/03/08 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
农业项目建议书
2014/08/25 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
代办社保委托书范文
2014/10/06 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
村官2015年度工作总结
2015/10/14 职场文书