2011-09-16 58 views
0

任何人都可以告诉我在目录中包含一组文件的最佳做法吗?例如,如果我有一个目录是/ javascript,并且在那里有10个javascript文件,我将如何去加载整个目录?包括目录中的所有/javascript/*.js

这个问题现在是有争议的,但为了将来的参考;

我使用下面在相同的方式读取文件:

<?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标签。

+3

有你“再阅读的内容,而不是输出'原因

3

我只需简单地在文件上调用include()而不是执行file_get_contents()。这是有两个主要原因/好处:

  • 在输出文件之前,您没有将文件加载到内存中(无论如何都是PHP)。这节省了服务器资源(尽管数量很少)。
  • 你可以把PHP代码放入你的JS/CSS等,并对它进行评估。这意味着您可以预先定义服务器端的JS变量,通过PHP非常简单地将颜色主题应用于您的CSS和许多其他内容。
+0

你是说如果我通过$文件循环并调用include($ files [i]),它应该像我期望的那样工作? – GAgnew

+0

'readfile()'我认为比'file_get_contents()'快,并且不会像'include'那样执行PHP(如果出于某种原因,有任何)。 –

+0

是的,就像HTML模板。在一天结束时,这些都只是纯文本......可能值得在包含之间输出一个CRLF,所以您不会破坏文件中不包含任何尾随的新行的任何内容。 – DaveRandom

2

不要。

使用Closure compiler将您的Javascript文件编译为单个缩小的源文件,然后使用HTML引用代替。

+0

@ nephi12:哎呀!抱歉。我想你是错误地写信给我的,或者我误解了它。现在我已经删除了所有的东西。该死...... –

+0

我只是说你是对的,而且OP应该向你道歉,而且他们像小孩一样行事。我应该说“给OP .....”但我没有。抱歉。 – nephi12

+0

@ nephi12:谢谢你的支持。 :-)你说得对,现在我觉得很傻。 –

0

PHP不会为您输出<script>标签。除了大量的文本之外,它不知道JS是什么。你的水珠版本是接近的,但必须是:

$files = glob("{directory/*.js}",GLOB_BRACE); 
for($i = 0; $i < count($files); $i++){ 
    echo '<script type="text/javascript">'; 
    include($files[$i]); 
    echo '</script>'; 
} 
相关问题