Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 简单HTML包含系统(嵌套包含)_Php_Html - Fatal编程技术网

Php 简单HTML包含系统(嵌套包含)

Php 简单HTML包含系统(嵌套包含),php,html,Php,Html,我的html文件变得非常巨大,因为我正在编写一个大型html应用程序,我想组织它。我有一个数组,其中包含所有包含项,如下所示: $html_includes = [ 'menu', 'tools', 'canvas', 'sidebar' => [ "resource", "layers" ], "footer" ]; 我试图做的是创建一个包含所有文件的函数,如果有文件夹(例如侧边栏),则包含.html,并创建一个回调来包含.html文件中的文件。

我的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);