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
}
将您的 include_once("./connector/hot/hotelbeds/account_config/$account/config.php");
放入索引中。然后如果你想使用 var $url
你需要在上面一行说明你想要那个全局变量:global $url;
.
我还建议更改 $url
名称并将其更改为常量,例如:const API_URL = 'website_url'
函数require_once
和include_once
仅在调用一次脚本时按时包含文件。因为您在 index.php[=27= 中包含文件 book.php 和 validate.php ] 然后 PHP 只包含 config.php 一次。
您可以在 index.php 中包含 config.php 并在您的函数中使用 global
指令.
或者您可以只使用函数 include
和 require
。这些函数包括一个文件,可多次编写脚本 - 在每次调用时。
我有一个配置文件,其中包含用于连接到 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
}
将您的 include_once("./connector/hot/hotelbeds/account_config/$account/config.php");
放入索引中。然后如果你想使用 var $url
你需要在上面一行说明你想要那个全局变量:global $url;
.
我还建议更改 $url
名称并将其更改为常量,例如:const API_URL = 'website_url'
函数require_once
和include_once
仅在调用一次脚本时按时包含文件。因为您在 index.php[=27= 中包含文件 book.php 和 validate.php ] 然后 PHP 只包含 config.php 一次。
您可以在 index.php 中包含 config.php 并在您的函数中使用 global
指令.
或者您可以只使用函数 include
和 require
。这些函数包括一个文件,可多次编写脚本 - 在每次调用时。