如何在PHP中设置站点范围的变量?

时间:2008-08-16 05:05:10

标签: php

我想在 php 中定义类似的内容:

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

然后在我的网站上使用该变量作为“endline”标记,如下所示:

echo "Blah blah blah{$EL}";

如何定义$ EL一次(仅在1个文件中),将其包含在我网站的每个页面上,而必须使用(奇怪的向后)global $EL;来引用它每个页面函数中的语句?

11 个答案:

答案 0 :(得分:6)

大多数PHP站点都应该有一个文件(我称之为标题),您在网站的每个页面上都包含该文件。如果您将第一行代码放在头文件中,那么在每个页面上都包含它:

 include 'header.php';

你不必使用全局关键字或任何东西,你编写的第二行代码应该可以工作。

编辑:哦对不起,这在函数内部不起作用......现在我看到了你的问题。

编辑#2:好的,请使用标题获取我的原始建议,但使用define()而不是变量。这些工作包含在函数内部。

答案 1 :(得分:3)

听起来像一个常数的工作。请参阅函数define()

答案 2 :(得分: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
}
?>

在我看来,在调用类或在函数内部包含变量以及外部需要做很多工作,而且,如果可能的话,最好避免这些情况。

答案 3 :(得分:1)

这样做 define ('el','\n\<\br/>\n'); 将其保存为el.php

然后您可以包含您要使用的任何文件,即

回声'某事'。 //注意我只是在行尾或前面添加el

希望这个帮助

注意请在&lt;之后删除'\'因为我必须把它放进去或者它不会在答案上显示br标签......

答案 4 :(得分:0)

@svec是这样,你只需要在函数中包含文件。这就是我的大多数软件的工作方式。

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

答案 5 :(得分:0)

另一种选择是使用具有公共静态属性的对象。我以前使用$ GLOBALS,但大多数编辑都不会自动完成$ GLOBALS。此外,无实例化的类在任何地方都可用(因为您可以在不知道PHP将要使用该类的情况下在任何地方进行实例化)。例如:

<?php

class SITE {
    public static $el;
}

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

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

Test();

?>

这将输出<br />

这比costants更容易处理,因为你可以在属性中放置任何类型的值(数组,字符串,int等),而常量不能包含数组。

这是由PhpEd forums上的用户向我建议的。

答案 6 :(得分:0)

您可以考虑使用框架来实现这一目标。更好的是您可以使用

Include 'functions.php';
require('functions');

进行OOP是另一种选择

答案 7 :(得分:0)

您可以使用auto_prepend_file directive来预解析文件。将指令添加到您的配置中,并将其指向您的包含路径中的文件。在该文件中添加常量,全局变量,函数或您喜欢的任何内容。

因此,如果您的前置文件包含:

<?php
define('FOO', 'badger');

在另一个Php文件中,您可以访问常量:

echo 'this is my '. FOO;

答案 8 :(得分:0)

svec,使用PHP框架。任何 - 那里有很多。 这是正确的方法。使用框架,您可以单独输入 为您的应用程序指出,因此定义站点范围的变量很容易 自然。此外,您不需要关心包含头文件 检查用户是否在每个页面上登录 - 体面的框架都可以 它适合你。

请参阅:

花一些时间学习其中一个,它很快就能收回。

答案 9 :(得分:-1)

IIRC一个常见的解决方案是一个普通文件,其中包含您在每个源文件中包含的声明,例如' constants.inc.php '。在那里,您可以定义一组应用程序范围的变量,然后在每个文件中导入。

但是,您必须在您使用的每个单个源文件中提供include指令。我甚至看到一些使用这种技术的项目为多种语言提供本地化。我更喜欢gettext方式,但也许这个变体更容易为普通用户使用。

修改对于您的问题,我建议使用 $ GLOBALS [] ,有关详细信息,请参阅Example #2

如果仍然不适用,我会尝试挖掘PHP5对象并创建一个提供所需静态常量的静态Singleton(http://www.developer.com/lang/php/article.php/3345121

答案 10 :(得分:-1)

如果数据是用户特定的,那么会话将是您最好的选择,否则只需使用conifg文件。 config.php中:

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

然后在每个页面上添加

require 'config.php'

您将能够访问该页面上的$ EL。