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__ * */ functionimport_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($filesas$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页面中使用<scripttype="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()处理相对路径的问题。
以上就是本文的全部内容了,更详细的信息请期待后续文章