2012-09-26 210 views
-1

我處於這種情況。PHP:定義全局範圍變量

我的PHP文件夾結構是這樣

UI 
    user 
    login.php 
    logout.php 
    jquery 
    somejs 

    css 
    somecss 
blah.php 
blah.php 

現在導入任何CSS,JS或任何PHP文件我用像

localhost/UI/user/index.php // example 

的文件路徑現在我試圖定義一個全局變量在任何頁面上如

<?php 
    $somevar = "localhost"; 
    GLOBAL $somevar; 
    ?> 

因此,我可以導入任何css js像

<?php echo $somevar ;?>/UI/user/index.php // example 

問題:它是工作在該網頁上只在我聲明的變量爲GLOBAL

我想使用的變量中的每個頁面上,並且不希望使用包括

有任何其他替代方案來定義一個變量的文件夾在PHP中?

+0

不要讓我知道如果任何澄清要求 – user1667633

+0

好,一個可能的黑客是用php.ini的混亂。但這是一個**黑客**。你最好只是把你的文件包含在任何地方。或者,更好的是,不要使用全局變量。我會創建一些'ModuleLoader'助手類,將它包含到任何地方,並讓它管理這些導入。甚至更好,使用[自動加載](http://php.net/manual/en/language.oop5.autoload.php)功能。 – J0HN

回答

0

您不要聲明變量與global。你可以在你的方法或函數體內使用它,即使它已經被設置(或者使用你的術語「聲明」)在它之外。因此,除非聲明變量,否則無法獲得變量。如果沒有運行PHP代碼(簡化,但在這裏沒關係),就沒有辦法做到這一點。並且代碼不是來自任何地方,因此需要設置變量的所述代碼的includerequire

您可以嘗試使用php.iniauto_include_file以使您的變量自動包含,但仍需要使用PHP代碼。

但你通常做錯了。將所有全局變量移動到類中,設置自動裝載器和靜態訪問。代碼將會更清潔。

0

好吧,我的經驗說.. global用於訪問函數內部定義的函數內部的變量。 可以有很多不同的解決方案,我會建議使用會話或cookie。將數據存儲在會話/ Cookie中,並在需要時進行訪問。

0

您可以使用特殊的PHP定義的$ GLOBALS數組。 $ GLOBALS數組是一個關聯數組,其中全局變量的名稱是鍵,該變量的內容是數組元素的值。請注意$ GLOBALS是如何存在於任何範圍內的,這是因爲$ GLOBALS是超全球性的

您可能不需要定義全局變量來將css,js或任何靜態文件即圖像等應用到您的應用程序。您可以使用相對路徑來包含js和css文件。你可以參考this article瞭解更多關於相對和絕對路徑。

0

你,無論你想訪問HOST變量使用define()功能用於此目的

config.php 
<?php 
define("host", "localhost"); 
?> 

現在包括這個頁面。

你可以訪問此變量這樣echo host;