2016-03-08 90 views
0

我有一个包含凭证信息连接到APIrequire_once同一个文件多次?

我有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"; 
?> 
+0

不,在validate.php中,$ url不是空的 – user2942945

回答

4

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

当您在函数中再次需要时,该文件已被要求,因此它被忽略。

这个变量超出了函数的范围,所以如果你不得不通过声明它们来访问它们,你可以声明它们为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.

0

把你include_once("./connector/hot/hotelbeds/account_config/$account/config.php");成指数代替。然后,如果您想使用var $url,则需要上面的一行,指出您需要该全局变量:global $url;

此外,我建议更改名称$url并将它更改为常量,如:const API_URL = 'website_url'

0

功能require_onceinclude_once只包括时间脚本的一个调用文件。因为你有文件book.php中validate.php的index.php那么PHP包括的config.php一次。

可以包括的config.php的index.php,并使用自己的函数中global指令。

或者您可以使用功能includerequire。这些功能包括一个脚本多次编写的文件 - 每次调用。