在PHP中包含文件使用包含它们的文件中的信息?

时间:2011-12-09 13:53:40

标签: php include

说我有以下文件

示例1

的functions.php

<?php
     session_start();
     function getSessionData(){
         ...
         // returns array
     }
?>

的index.php

<?php
    session_start();
    include("functions.php");
    $sessionData = getSessionData();
?>
<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <?php print_r($sessionData); ?>
    </body>
</html>

现在index.php包含functions.php。因为我在index.php中有session_start(),这是否意味着它会自动添加到functions.php中(因为函数包含在索引中?)

我不确定我是否明确表示。

示例2

的config.php

<?php
    $url = "www.example.com";
?>

的functions.php

<?php
     include("config.php");
     function getSomething(){
         ...
         return $url
     }
?>

的index.php

<?php
    include("config.php");
    include("functions.php");
    $some_var = getSomething();
?>
<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <?=$some_var;?>
    </body>
</html>

现在,functions.php和index.php都包含config.php ...

但是因为config已经包含在index.php ...

这是否意味着必须包含函数aswel?

我想我只是困惑自己tbh :)

1 个答案:

答案 0 :(得分:6)

是。您可以将include视为简单地粘贴include语句所在文件中的代码。

在示例2中,您不需要在索引中再次包含config,因为它已经包含在函数中(反之亦然) - 您实际在做的是在config.php中运行代码两次(例如,使用include_once可以防止这种情况。

示例1中的session_start()也是如此。当加载索引时,会发生以下情况:

  1. session_start
  2. 包括functions.php
    1. session_start(现在不需要)
    2. function getSessionData() {..}
  3. (返回索引) - 致电getSessionData()
  4. 另外,在你的第二个例子中,如果没有在它之前调用$url(在函数内部),你将无法访问该函数中的global $url