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

Ale*_*nch 1 php include

说我有以下文件

例1

的functions.php

<?php
     session_start();
     function getSessionData(){
         ...
         // returns array
     }
?>
Run Code Online (Sandbox Code Playgroud)

的index.php

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

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

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

例2

config.php文件

<?php
    $url = "www.example.com";
?>
Run Code Online (Sandbox Code Playgroud)

的functions.php

<?php
     include("config.php");
     function getSomething(){
         ...
         return $url
     }
?>
Run Code Online (Sandbox Code Playgroud)

的index.php

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

现在两个functions.php和index.php都包含config.php ...

但因为config已包含在index.php中...

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

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

Ros*_*oss 6

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

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

这同样适用于session_start()实施例1中当索引被装载会发生以下情况:

  1. session_start
  2. 包括functions.php
    1. session_start (现在不需要)
    2. function getSessionData() {..}
  3. (回到索引) - 打电话 getSessionData()

此外,在第二个示例中,如果$url没有global $url在它之前调用(在函数内部),您将无法访问该函数.