将 PHP includes() 存储到内存中

Storing PHP includes() into memory

我正在构建一个动态 table,它将被编辑table 并根据其中的数据类型进行格式化。例如,一列包含颜色,一列包含评级,一列包含日期。

数据库中存储的数据是文本(#009900 或 4 或 1435856109),但信息的类型将决定其显示和编辑方式。单击颜色单元格打开颜色选择器,单击日期打开日历日期选择器等。

为了实现这一点,我将遍历行和单元格并包含 ("edit_color.php" OR "edit_date.php") 以调出合适的编辑器。当每个单元格包含一个单独的 php 文件的数十行或数百行时,问题就来了。

有没有办法将文件一次包含到内存中并一遍又一遍地使用代码,而不必在每个单元格循环中都包含它?

这是代码的基本思想

<table>
<?php 
    foreach ($rows as $row){
     echo "<tr>";
     foreach ($cells as $cell){
         echo "<td>";
         include ("/cells/edit_".$cell->type.".php");
         echo "</td>";
     }
    echo "</tr>";
    }
<table>

//edit_date.php\
<div class="cell_name"><?php echo date("D-M-Y",$cell->data)?></div>
<a href="#" onClick="openCalendar()">Pick Date</a>

还有很多事情要做,但我不想在每个单元格中都包含每个 edit_[type].php。还有哪些其他选择?

这是作为网络应用提供的吗?

如果是,您可能想探索在 Web 服务器级别缓存文件,而不是直接在 PHP。

例如,如果您使用的是 Apache: http://httpd.apache.org/docs/2.2/caching.html

简短的回答是使用 include_once()。

但是,您永远不应该在这样的循环中包含代码 - 这是非常糟糕的形式。

您应该使用 include_once 和自动加载...(以及表示和代码的分离,但这太多了,无法在这里解释)。

改用函数。

例如你有

foo.php

<?php
    echo 'hello from foo';

你包括了无数次。相反,有这个:

foo.php:

<?php

function foo() {
   return 'hello from foo';
}

包含一次,然后在需要的任何地方调用foo()

<td><?php echo foo(); ?><</td>