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 相关文章推荐
Email+URL的判断和自动转换函数
Oct 09 PHP
初学CAKEPHP 基础教程
Nov 02 PHP
shopex主机报错误请求解决方案(No such file or directory)
Dec 27 PHP
php抽奖小程序的实现代码
Jun 18 PHP
YII实现分页的方法
Jul 09 PHP
PHP多线程类及用法实例
Dec 03 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
php生成Android客户端扫描可登录的二维码
May 13 PHP
Laravel实现表单提交
May 07 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
PHP笛卡尔积实现算法示例
Jul 30 PHP
PHP中strval()函数实例用法
Jun 07 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
Python龙贝格法求积分实例
2020/02/29 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
Python eval函数原理及用法解析
2020/11/14 Python
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
大专自我鉴定范文
2013/10/01 职场文书
房地产项目建议书
2014/03/12 职场文书
卫生巾广告词
2014/03/18 职场文书
生态养殖创业计划书
2014/05/06 职场文书
单位工作证明范文
2014/09/14 职场文书
开票员岗位职责
2015/02/12 职场文书
辞职信的写法
2015/02/27 职场文书
2015年超市工作总结
2015/04/09 职场文书
用JS实现飞机大战小游戏
2021/06/09 Javascript