2008-08-16 47 views
5

我想在PHP定義是這樣的:如何在php中設置站點範圍的變量?

$EL = "\n<br />\n"; 

,然後使用該變量作爲「底線」標記所有在我的網站,像這樣:

echo "Blah blah blah{$EL}"; 

我如何定義$ EL一次(僅在1個文件中),將其包含在我網站上的每個頁面上,並且不是必須使用每個頁面函數中的(奇怪向後)global $EL;語句來引用它?

回答

6

大多數PHP網站都應該有一個文件(我稱之爲頭文件),該文件包含在網站的每個頁面上。如果你把代碼,第一行頭文件,然後包括像這樣在每一頁上:

include 'header.php'; 

你將不必使用全局關鍵字或任何東西,你寫的代碼,第二行應該工作。

編輯:哦,對不起,這不會在功能內工作...現在我看到你的問題。

編輯#2:好吧,採取我的原始意見與標題,但使用define()而不是變量。那些包含在函數內部的工作。

-1

IIRC一個常見的解決方案是一個純文件,包含您的聲明,包含在每個源文件中,如'constants.inc.php'。在那裏你可以定義一堆應用程序範圍的變量,然後將其導入每個文件中。

但是,您必須提供中的包含指令,每個您使用的單個源文件。我甚至看到一些使用這種技術的項目爲幾種語言提供本地化。我更喜歡gettext方式,但也許這個變體對於普通用戶來說更容易。

編輯對於您的問題,我的電子書籍使用$ GLOBALS [],看到的爲Example #2細節。

如果這仍然不適用,我會嘗試到Digg下來的PHP5的對象,並創建一個提供所需的靜態常量(http://www.developer.com/lang/php/article.php/3345121

靜態辛格爾頓
-1

會議將是你最好的選擇,如果數據是用戶具體,否則只需使用conifg文件。 的config.php:

<?php 
$EL = "\n<br />\n"; 
?> 

然後在每個頁面上添加

require 'config.php' 

的,你將能夠訪問該網頁$ EL。

3

聽起來像一個常數的工作。請參閱功能define()

0

@svec是的,這將是,你只需要包括文件內的功能也。這是我的大部分軟件的工作原理。

function myFunc() 
{ 
require 'config.php'; 
//Variables from config are available now. 
} 
1

您使用的是PHP5嗎?如果您定義__autoload()函數並使用具有某些常量的類,則可以在需要它們的地方調用它們。關於這一點的唯一惱人的事情是,你必須輸入一些東西長一點,像

MyClass::MY_CONST 

的好處是,如果你決定改變你處理新線的方式,你只需要改變它在一個地方。

當然,一個可能的負面影響是你正在調用包含一個額外的函數(__autoload()),運行該函數(當你引用類時),然後加載另一個文件(你的類文件)。這可能比它的價值更高。

如果我可能會提供一個建議,它將避免這種需要回顯標籤的回顯(如<br />)。如果你可以設置一些更模板化的東西,你可以處理nl而不必明確地輸入它們。因此,而不是

echo "Blah Blah Blah\n<br />\n"; 

嘗試:

<?php 
if($condition) { 
?> 
<p>Blah blah blah 
<br /> 
</p> 
<?php 
} 
?> 

它只是我看來,像函數中調用補課或包括變量以及出很多並不需要做的工作,並且如果可能的話,最好避免這種情況。

0

另一種選擇是使用具有公共靜態屬性的對象。我曾經使用$ GLOBALS,但大多數編輯器不會自動完成$ GLOBALS。此外,未實例化的類可以在任何地方使用(因爲您可以在任何地方安裝,而無需告訴PHP您將使用該類)。例如:

<?php 

class SITE { 
    public static $el; 
} 

SITE::$el = "\n<br />\n"; 

function Test() { 
    echo SITE::$el; 
} 

Test(); 

?> 

這將輸出<br />

這也更容易處理比costants,你可以把任何類型的值的屬性(數組,字符串,整數等)內,而常量不能包含陣列。

這是我的PhpEd forums用戶推薦給我的。

0

svec,使用PHP框架。任何 - 這裏有很多。 這是正確的做法。使用框架,您可以爲您的應用程序指定單個條目 ,因此定義站點範圍內的變量非常容易,並且自然也是 。您也不需要關心包含頭文件,也不需要檢查用戶是否在每一頁上登錄 - 體面的框架將爲您做 。

參見:

投入一些時間學習他們中的一個,它會很快償還。

1

不要這個 define ('el','\n\<\br/>\n'); 保存爲el.php

那麼你可以包括你想使用的任何文件,即

回聲「something'.el; //注意我只是在行結束或前

希望這有助於

注意請刪除添加的報「\」後< BR,因爲我不得不把它或它不會顯示在BR標籤答案...