2012-09-25 31 views
0

我叫這是在我的smsconfig.php文件中定義的一樣調用從另一個頁面的函數在PHP

$GLOBAL_URL_OF_THE_SITE= "http://webfaction"; 


function get_site_url(){ 
    return $GLOBAL_URL_OF_THE_SITE; 
} 

在我的index.php文件中的函數,我包括smsconfig.php文件,然後我現在做了以下內容:

<?php 
    include("smsconfig.php"); 
    ?> 
    <html> 
    <head > 
    <link rel="stylesheet" type="text/css" href="default.css" /> 
     <script src="<?php echo get_site_url();?>/UI/jquery/jquery-1.7.2.min.js" type="text/javascript"></script> 

不幸的是我JS沒有加載和我得到的螢火以下錯誤:

"NetworkError: 404 Not Found - http://webfaction/UI/%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Undefined%20variable:%20GLOBAL_URL_OF_THE_SITE%20in%20%3Cb%3E/opt/lampp/htdocs/UI/smsconfig.php%3C/b%3E%20on%20line%20%3Cb%3E11%3C/b%3E%3Cbr%20/%3E/UI/jquery/jquery-1.7.2.min.js" 

請告訴我我做錯了什麼?

+0

不,不,它實際上我沒有把我的127.0.0.1地址作爲/ etc/host中的webfaction – user1667633

+0

你可以使用常量來實現它;尋找'define()'。 –

回答

4

功能默認情況下無權訪問全局變量。你必須訪問它之前global聲明變量:

$GLOBAL_URL_OF_THE_SITE= "http://webfaction"; 

function get_site_url(){ 
    global $GLOBAL_URL_OF_THE_SITE; 

    return $GLOBAL_URL_OF_THE_SITE; 
} 

沒有global,你應該會看到一個警告,這可能會抑制:

PHP公告:未定義的變量:GLOBAL_URL_OF_THE_SITE

+0

哦,感謝meagar編輯 – user1667633

+1

更好的解決方案是首先避免全局變量。還有一些要點:你不應該在其名稱中嵌入類似變量範圍的東西,只需將其稱爲'$ URL_OF_THE_SITE';您應該選擇較短的變量名稱......「SITE_URL」更短,更易於閱讀,並且與「URL_OF_THE_SITE」一樣具有溝通性。你應該保留'UPPER_CASE'作爲常量;如果你想要定義常量,你應該使用['define'](http://php.net/manual/en/function.define.php)。這一切加起來就是define(「SITE_URL」,「http://mysite.com」);' – meagar

0

這是一個變量範圍的問題。你的函數看不到變量,因爲變量超出了它的範圍。你應該這樣做:

function get_site_url(){ 
    $GLOBAL_URL_OF_THE_SITE= "http://webfaction"; 

    return $GLOBAL_URL_OF_THE_SITE; 
} 
+0

我想這取決於。如果這將用於在任何地方生成URL,那麼如果您在此例程內或在全局內聲明URL,它不會產生任何功能差異。但是,微薄的解決方案更好。 – andrewsi

+0

如果我將變量定義爲公衆,該怎麼辦? – user1667633

+0

@ user1667633 - 查看一下meagar的評論。 – andrewsi

0

通過使用數組$GLOBALS,您可以在沒有在函數體中聲明全局的情況下進行編碼。該數組具有所有全局變量作爲鍵。

相關問題