我可以在PHP中的include中使用include吗?

时间:2011-09-16 23:01:43

标签: php include

我正在尝试使用PHP设置我的网站,但我是初学者。

我已经知道如何通过点击导航链接来包含maincontents(只是单独的.php文件中的内容)。

但是如果包含的内容有一个subnavi并且我也想使用这个navi将内容包含在那个内容中呢?

包含在包含工作中吗?

如何告知所包含内容中的链接,他应首先加载索引,然后自己,然后从subnavi中选择内容?

或者有更好的方法来构建我的代码吗?

这是 index.php 的代码:

<?php 

if ($_GET['page'] == 'first' ){
    include 'first.php';
}else if ($_GET['page'] == 'second' ){
    include 'second.php';
}else if ($_GET['page'] == 'third' ){
    include 'third.php';
}else if ($_GET['page'] == 'fourth' ){
    include 'fourth.php';
}else include 'drawing.php';

?>

我用以下链接调用链接:

href="index.php?page=first"

我现在可以为子媒体使用相同的内容吗?但是要补充说它有效吗?

编辑:我再次提前解决问题,因为现在我觉得PHP无法做到我想要实现的目标。

让我再次解释一下我的想法:

我的index.php是独立编码(页眉和页脚),它有一个include部分,我想加载内容。该链接已经提供并且有效。我正在加载的内容不是独立编码的。它只包含一个包含所有内容的div,仅此而已。我认为这就是包含的原因。

好的,但是现在index.php中加载的内容还有一些指向其他包含的链接。这是一个subnavi。因此,我还希望将内容包含在刚刚加载的内容中,这也不是独立内容(没有页眉或页脚)。

我可以想象的问题是,加载到index.php中的内容当然不知道它是一个加载的内容。所以出于这个原因,当它本身应该加载另一个内容时,它无法自己重建,因为现在它的“创建页面”确实存在。对?

为了确切我的问题:是否有一种链接用于加载内容的subnavi href =“loadindexthenloadmeinindexthenloadtheincludedcontentIhavejustaskedfor”

如果没有,我很乐意学习如何。

如果这种方式只是非正统,那么请告诉我。

感谢您的关注。

3 个答案:

答案 0 :(得分:9)

是的,您可以加入包含。

将include视为将包含文件的内容复制并粘贴到include "blah.php"所在的位置。

构建这个的“更好的方法”是拥有一个“主”视图,包括应该彼此独立的其他部分和部分。

您应该注意包含哪些文件,因为您最终可能会多次包含一些文件。如果include定义了一个函数,这会导致脚本崩溃,这可能是一个问题。在这种情况下,您可以使用include_once


有了这样说......包含在一个包含内?

enter image description here (抱歉无法抗拒)

答案 1 :(得分:2)

首先:

$routes = array( 
   'first'    => 'first.php',
   'second'   => 'second.php',
   'third'    => 'third.php',
   'fourth'   => 'fourth.php',
   'fallback' => 'drawing.php'
);

$page = $_GET['page'];
if ( !array_key_exists( $page , $routes ))
{
   $page = 'fallback';
}

include $routes[$page];

是的,你可以包括内部包含。

您也可以使用它们执行许多其他操作,例如创建simple templating engine。或者将include中的数据传递给变量:

让我们说你有行:

$config = include 'conf.php';

和`conf.php'包含:

<?php
   return array(
      'foo' => 'lorem ipsum sit dolor amet',
      'bar' => 'cogito ergo sum'
   );
?>

然后它将在$config内传递此数组..但很少使用此技巧。并不总是最好的方式,应用理由。

答案 2 :(得分:0)

当然可以。它被称为recrusive,包括