题
我想定义这样的东西 php:
$EL = "\n<br />\n";
然后在我的网站上使用该变量作为“结束线”标记,如下所示:
echo "Blah blah blah{$EL}";
如何定义 $EL 一次(仅在 1 个文件中),将其包含在我网站的每个页面上,以及 不是 必须使用(奇怪地向后)引用它 global $EL;
在每个页面函数中声明?
解决方案
大多数 PHP 网站都应该有一个文件(我称之为标头),您可以将其包含在网站的每个页面上。如果将第一行代码放入头文件中,则将其包含在每个页面上,如下所示:
include 'header.php';
您不必使用 global 关键字或任何东西,您编写的第二行代码应该可以工作。
编辑:哦,抱歉,这在函数内部不起作用......现在我看到你的问题了。
编辑#2:好的,接受我对标题的最初建议,但是使用 定义() 而不是一个变量。这些在被包含后在函数内部工作。
其他提示
听起来像是常量的工作。查看功能 定义().
你用的是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 是很多不需要完成的工作,并且,如果可能的话,最好避免此类情况。
做这个
define ('el','\n\<\br/>\n');
将其另存为 el.php
然后你可以包含你想要使用的任何文件,即
echo '某事'.el;// 注意我只是在行尾或前面添加 el
希望这有帮助
注意,请删除 < br 之后的 '\',因为我必须将其放入,否则它不会在答案中显示 br 标记...
@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 />
这也比常量更容易处理,因为您可以在属性中放置任何类型的值(数组、字符串、整数等),而常量不能包含数组。
这是由一位用户向我建议的 PhpEd 论坛.
IIRC 一个常见的解决方案是一个包含声明的纯文件,您可以将其包含在每个源文件中,例如'常量.inc.php'。在那里,您可以定义一堆应用程序范围的变量,然后将它们导入到每个文件中。
不过,您必须在中提供 include 指令 每一个 您使用的单个源文件。我什至看到一些项目使用这种技术来提供多种语言的本地化。我更喜欢 gettext 方式,但也许这种变体对于普通用户来说更容易使用。
编辑 对于你的问题我建议使用 $全局变量[], , 看 例子#2 了解详情。
如果这仍然不适用,我会尝试挖掘 PHP5 对象并创建一个提供所需静态常量的静态单例(http://www.developer.com/lang/php/article.php/3345121)
如果数据是特定于用户的,那么会话将是您最好的选择,否则只需使用 conifg 文件。配置.php:
<?php
$EL = "\n<br />\n";
?>
然后在每个页面添加
require 'config.php'
您将能够在该页面上访问 $EL。