有人能告诉我在目录中包含一组文件的最佳做法吗?
例如,如果我有一个/ javascript目录,并且其中有10个javascript文件,我将如何加载整个目录?
这个问题现在没有实际意义,但供将来参考;
我使用以下内容以 相同的方式阅读文件 :
<?php
session_start();
// Auto import all js files in the directory.
$files = glob("*.js");
sort($files);
$jsFiles = array();
for($i = 0; $i < count($files); $i++){
error_log('Auto-Opening: '.$files[$i]);
$tempString = file_get_contents($files[$i]);
//error_log('Auto-Opened Content: '.$tempString);
array_push($jsFiles, $tempString);
}
?>
抱歉,我想这需要澄清:
我所包含的代码用于我项目的一个完全独立的部分,它包含javascript文件目录的RAW字符串格式,用于我的处理目的。你不必担心我为什么要这样做。
我可以使用它来添加script
标签,并回显这些文件,但我正在寻找一种更快更优雅的方式来包含目录。与上面的代码不同(我的代码永远不会执行它的javascript。我只是从文件中创建字符串并将其发送给JS进行解析)。
请按照建议注意:
$files = glob("{directory/*.js}",GLOB_BRACE);
for($i = 0; $i < count($files); $i++){
include($files[$i]);
}
在没有script
标记的情况下,只会将这些文件回显到屏幕上。
答案 0 :(得分:3)
我只需在文件上调用include()
而不是file_get_contents()
。这有两个主要原因/好处:
答案 1 :(得分:2)
别。
使用Closure compiler将您的Javascript文件编译为单个缩小的来源,并改为使用您的HTML参考。
答案 2 :(得分:1)
我可以使用它来添加脚本标记,并回显这些文件,但我是 寻找更快更优雅的方式来包含目录。不像 上面的代码(我的代码永远不会执行其javascript。我 只需从文件中创建字符串并将其发送给JS for 解析)。
如果您希望PHP脚本的输出以javascript的形式执行,则需要添加正确的标题:
header("Content-type: text/javascript");
foreach (glob('/path/to/files/*.js') as $file)
{
readfile($file);
}
我正在将目录作为字符串读取,因为我正在进行一些解析 使用原始JS(但这与我在这里做的事情是分开的)。一世 知道使用php通过静态编码来包含一堆文件 在,我想在一个动态的目录基础上做。
除非你有某种文件命名约定,否则请记住文件的顺序基本上只限于你在文件名上使用php的数组排序功能。 JS和CSS通常非常依赖于按特定顺序执行或读取的代码或文件,因此根据您实际尝试完成的内容(仍然非常不清楚),这可能是一个糟糕的主意。
答案 3 :(得分:1)
PHP不会为您输出<script>
标签。它不知道JS是什么,除了一大块文本。你的glob版本很接近,但必须是:
$files = glob("{directory/*.js}",GLOB_BRACE);
for($i = 0; $i < count($files); $i++){
echo '<script type="text/javascript">';
include($files[$i]);
echo '</script>';
}