簡體   English   中英

如何在 php 中設置站點范圍的變量?

[英]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 論壇上的一位用戶向我建議的。

svec,使用PHP框架。 隨便 - 那里有很多。 這是正確的方法。 使用框架,您的應用程序具有單一入口點,因此定義站點范圍的變量既簡單又自然。 此外,您不需要關心包含頭文件或檢查用戶是否在每個頁面上登錄 - 體面的框架會為您完成。

看:

花一些時間學習其中之一,它很快就會得到回報。

您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM