我正在构建一个动态表格,该表格可根据其中的数据类型进行编辑和格式化。例如,具有颜色的列,具有评级的列和具有日期的列。
存储在数据库中的数据是文本(#009900 OR 4 OR 1435856109),但信息类型将决定其显示和编辑方式。单击颜色单元格可打开颜色选择器,单击日期可打开日历日期选择器等。
为了达到这个目的,我将循环遍历行和单元格并包含(“edit_color.php”或“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
。还有哪些其他选择?
答案 0 :(得分:1)
改为使用功能。
e.g。你有
foo.php
<?php
echo 'hello from foo';
你包括了几百万次。相反,有这个:
foo.php:
<?php
function foo() {
return 'hello from foo';
}
包括此ONCE,然后拨打foo()
您需要它的那个:
<td><?php echo foo(); ?><</td>
答案 1 :(得分:0)
这是作为网络应用程序提供的吗?
如果是,您可能希望探索在Web服务器级别缓存文件,而不是直接在PHP中。
例如,如果您使用的是Apache: http://httpd.apache.org/docs/2.2/caching.html
答案 2 :(得分:0)
简短的回答是使用include_once()。
但是,你不应该在这样的循环中包含代码 - 这只是非常糟糕的形式。
你应该使用include_once和自动加载......(以及表示和代码的分离,但这里的解释太多了。)