[英]How to setup site-wide variables in php?
我想在php 中定義這樣的東西:
$EL = "\n<br />\n";
然后在我的網站上使用該變量作為“結束線”標記,如下所示:
echo "Blah blah blah{$EL}";
我如何定義 $EL 一次(僅在 1 個文件中),將其包含在我網站的每個頁面上,而不必使用(奇怪地向后) global $EL;
引用它global $EL;
每個頁面函數中的語句?
大多數 PHP 站點都應該有一個文件(我稱之為標題),您可以將其包含在站點的每個頁面上。 如果你把第一行代碼放在頭文件中,那么在每一頁上都像這樣包含它:
include 'header.php';
您不必使用 global 關鍵字或任何東西,您編寫的第二行代碼應該可以工作。
編輯:哦,抱歉,這在函數內部不起作用......現在我看到了你的問題。
編輯 #2:好的,將我的原始建議與標題一起使用,但使用define()而不是變量。 這些在被包含后在函數內部工作。
聽起來像是一個常數的工作。 請參閱函數define() 。
這樣做define ('el','\\n\\<\\br/>\\n');
將其另存為 el.php
然后你可以包含任何你想使用的文件,即
回聲'東西'.el; // 注意我只是在行尾或前面添加了 el
希望這有幫助
請注意,請在 < br 之后刪除“\\”,因為我必須將其放入,否則它不會在答案上顯示 br 標簽...
你用的是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
}
?>
在我看來,調用類或在函數中包含變量以及 out 是很多不需要完成的工作,並且,如果可能的話,最好避免這些情況。
@svec 是的,這將,您只需將文件也包含在函數中。 這就是我的大多數軟件的工作方式。
function myFunc()
{
require 'config.php';
//Variables from config are available now.
}
另一種選擇是使用具有公共靜態屬性的對象。 我曾經使用 $GLOBALS 但大多數編輯器不會自動完成 $GLOBALS。 此外,未實例化的類隨處可用(因為您可以在任何地方實例化,而無需告訴 PHP 您將要使用該類)。 例子:
<?php
class SITE {
public static $el;
}
SITE::$el = "\n<br />\n";
function Test() {
echo SITE::$el;
}
Test();
?>
這將輸出<br />
這也比 costants 更容易處理,因為您可以在屬性(數組、字符串、整數等)中放置任何類型的值,而常量不能包含數組。
這是PhpEd 論壇上的一位用戶向我建議的。
您可以使用auto_prepend_file 指令來預解析文件。 將該指令添加到您的配置中,並將其指向包含路徑中的文件。 在該文件中添加您的常量、全局變量、函數或任何您喜歡的內容。
因此,如果您的前置文件包含:
<?php
define('FOO', 'badger');
在另一個 PHP 文件中,您可以訪問常量:
echo 'this is my '. FOO;
您可能會考慮使用框架來實現這一點。 更好的是你可以使用
Include 'functions.php';
require('functions');
做 OOP 是另一種選擇
IIRC 一個常見的解決方案是包含您的聲明的純文件,您將其包含在每個源文件中,例如“ constants.inc.php ”。 在那里您可以定義一堆應用程序范圍的變量,然后將它們導入到每個文件中。
盡管如此,您必須在您使用的每個源文件中提供 include 指令。 我什至看到一些項目使用這種技術為多種語言提供本地化。 我更喜歡 gettext 方式,但對於普通用戶來說,也許這個變體更容易使用。
編輯對於您的問題,我建議使用$GLOBALS[] ,有關詳細信息,請參見示例 #2 。
如果這仍然不適用,我會嘗試挖掘 PHP5 對象並創建一個提供所需靜態常量的靜態單例( http://www.developer.com/lang/php/article.php/3345121 )
會話將是您最好的選擇,如果數據是特定於用戶的,否則只需使用配置文件。 配置文件:
<?php
$EL = "\n<br />\n";
?>
然后在每個頁面上添加
require 'config.php'
您將能夠在該頁面上訪問 $EL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.