PHP合并静态文件详解

  配置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()处理相对路径的问题。

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