[英]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.