2016-03-08 84 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。這些功能包括一個腳本多次編寫的文件 - 每次調用。