require_once同一个文件多次?

require_once the same file multiple time?

我有一个配置文件,其中包含用于连接到 API

的凭据信息

我将我的配置文件包含在 2 个不同文件中的 2 个函数中

在第一个调用的函数中,我有我的凭据变量,但是当我调用第二个函数时,我的凭据变量是空的。

index.php

   <?php
        require_once("./connector/hot/hotelbeds/book.php");

        if($_REQUEST['connector'] == 'hotelbeds')
        {
             require_once("connector/hot/hotelbeds/validate.php");

             validate_hotelbeds($_REQUEST);
        }

        $booking_output = book_hotelbeds($_REQUEST);
    ?>

validate.php

<?php
    function validate_hotelbeds($results)
    {
        $account = $results['header']['account'];

        include_once("./connector/hot/hotelbeds/account_config/$account/config.php");
        // $url contain my url
        $validate = curl_get($url , $results);
    }
?>

book.php

<?php
    function book_hotelbeds($results)
    {
        $account = $results['header']['account'];

        include_once("./connector/hot/hotelbeds/account_config/$account/config.php");
        // $url is empty
        $book = curl_get($url , $results);
    }
?>

config.php

<?php
     $url = "http://www.websitelink.com";
?>

第一次需要时,会引入变量。

当您从函数内部再次需要它时,该文件已经被要求,因此将被忽略。

此时变量在函数的范围之外,因此如果必须,您需要通过将它们声明为 global.

来访问它们

也许更好的主意是将这些变量声明为常量,这意味着它们将在函数范围内可用:

$myVariable = 'hello';
define('MY_CONSTANT', 'world');

echo 'Global scope: ', $myVariable, MY_CONSTANT, PHP_EOL; // helloworld

function myFunction()
{
    echo 'Function scope: ', $myVariable, MY_CONSTANT, PHP_EOL; // world
}

function myGlobalFunction()
{
    global $myVariable;
    echo 'Function scope using global: ', $myVariable, MY_CONSTANT, PHP_EOL; // helloworld
}

Example.

将您的 include_once("./connector/hot/hotelbeds/account_config/$account/config.php"); 放入索引中。然后如果你想使用 var $url 你需要在上面一行说明你想要那个全局变量:global $url;.

我还建议更改 $url 名称并将其更改为常量,例如:const API_URL = 'website_url'

函数require_onceinclude_once 仅在调用一次脚本时按时包含文件。因为您在 index.php[=27= 中包含文件 book.phpvalidate.php ] 然后 PHP 只包含 config.php 一次。

您可以在 index.php 中包含 config.php 并在您的函数中使用 global 指令.

或者您可以只使用函数 includerequire。这些函数包括一个文件,可多次编写脚本 - 在每次调用时。