Php 简单HTML包含系统(嵌套包含)
我的html文件变得非常巨大,因为我正在编写一个大型html应用程序,我想组织它。我有一个数组,其中包含所有包含项,如下所示:Php 简单HTML包含系统(嵌套包含),php,html,Php,Html,我的html文件变得非常巨大,因为我正在编写一个大型html应用程序,我想组织它。我有一个数组,其中包含所有包含项,如下所示: $html_includes = [ 'menu', 'tools', 'canvas', 'sidebar' => [ "resource", "layers" ], "footer" ]; 我试图做的是创建一个包含所有文件的函数,如果有文件夹(例如侧边栏),则包含.html,并创建一个回调来包含.html文件中的文件。
$html_includes = [
'menu',
'tools',
'canvas',
'sidebar' => [
"resource",
"layers"
],
"footer"
];
我试图做的是创建一个包含所有文件的函数,如果有文件夹(例如侧边栏),则包含.html
,并创建一个回调来包含.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);
文件夹结构 sidebar.html
范围是问题所在,因为回调函数无权访问
$value/$key
。我可能需要匿名函数,但我不确定这是否正确。欢迎任何帮助
这是组织代码的好方法吗
简短回答:没有
您将维护一个包含所有内容的文件夹结构,然后维护第二个阵列系统来管理所有内容。如果你的网站变得更大或更复杂,它很快就会变得无法维护
至少,您应该将所有这些文件更改为.php
,或者将服务器设置为通过php解释器运行.html
文件。然后,当一个文件需要包含另一个文件时,您可以简单地
,该文件所需的所有内容都将包含在内,依此类推,而不必单独跟踪结构
这可能也可以通过服务器端包含来实现,但我认为这是最好避免的
也就是说,像这样构建站点只比静态HTML文件稍微好一点。你肯定应该考虑使用某种框架。这是我需要的功能,使用
在
sidebar.html
中,更改自callback()->$callback()
它不是一个站点,它只是一个html文件,所有单独的文件都只是代码片段。我不需要.php
扩展名,因为它只是简单的html,而且有一个包含900行代码的html文件是混乱的。我认为一个php框架不适合我的项目,因为它用于多页面设置复制将您的页面粘贴到Wordpress或Drupal,并利用这样做节省的时间做一些有趣的事情!:)真的,我爱drupal!而且它包含了您试图编写的相同类型的功能。改为学习drupal。这是我的意见。。
\canvas.html
\menu.html
\tools.html
\sidebar
\sidebar\layers.html
\sidebar\resources.html
\sidebar\sidebar.html
<div id="sidebar">
<div id="sortable">
<?php callback(); ?>
</div>
</div>
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);