我的html文件变得非常庞大,因为我正在编写一个大型html应用程序并且我想组织它。我有一个包含所有包含的数组:
$html_includes = [
'menu',
'tools',
'canvas',
'sidebar' => [
"resource",
"layers"
],
"footer"
];
我要做的是创建一个函数来包含所有文件,如果有一个文件夹(例如侧边栏)包含<folder>.html
并创建一个回调以包含带有<folder>.html
文件的文件。到目前为止我的尝试:
function include_html($includes,$path=""){
foreach($includes as $key => $value){
if(is_array($value)){
function callback(){
include_html($value,($path.$key."/"));
}
}
include($path.$key.".html");
}
}
include_html($html_includes);
文件夹结构
\canvas.html
\menu.html
\tools.html
\sidebar
\sidebar\layers.html
\sidebar\resources.html
\sidebar\sidebar.html
sidebar.html
<div id="sidebar">
<div id="sortable">
<?php callback(); ?>
</div>
</div>
范围是问题,因为回调doest无法访问$value/$key
。我可能需要的可能是匿名函数,但我不确定这是否正确。欢迎任何帮助。
答案 0 :(得分:0)
这是组织代码的好方法吗?
简答:不。
您正在维护包含所有包含的文件夹结构,然后您将维护第二个数组系统来管理它。如果您的网站变得更大或更复杂,它很快就会变得无法维护。
至少应该将所有这些文件更改为.php
或将服务器设置为通过PHP解释器运行.html
文件。然后,当一个文件需要包含另一个文件时,您只需<?php include('otherfile.php'); ?>
, 文件所需的所有内容都将被包含在内,依此类推,而无需单独跟踪结构。< / p>
这可能也可以通过服务器端包含来实现,但恕我直言,这是最好的避免。
也就是说,像这样构建您的网站只比静态HTML文件略胜一筹。你应该考虑使用某种框架。
答案 1 :(得分:0)
这是我需要的使用http://www.php.net/manual/en/functions.anonymous.php
所需的功能function include_html($includes, $path = "") {
foreach($includes as $key = > $value) {
if (is_array($value)) {
$callback = function () use($value, $key, $path) {
include_html($value, ($path.$key."/"));
};
include $path.$key."/".$key.".html";
} else include $path.$value.".html";
}
}
include_html($html_includes, $html_path);
sidebar.html
改为callback() -> $callback()