我想在php中定义这样的东西:
$EL = "\n<br />\n";
然后将该变量用作我网站上的“结束线”标记,如下所示:
echo "Blah blah blah{$EL}";
如何定义 $EL 一次(仅在 1 个文件中),将其包含在我网站上的每个页面上,而不必在每个页面函数中使用(奇怪的向后)global $EL;
语句来引用它?
我想在php中定义这样的东西:
$EL = "\n<br />\n";
然后将该变量用作我网站上的“结束线”标记,如下所示:
echo "Blah blah blah{$EL}";
如何定义 $EL 一次(仅在 1 个文件中),将其包含在我网站上的每个页面上,而不必在每个页面函数中使用(奇怪的向后)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 更容易处理,因为您可以在属性中放置任何类型的值(数组、字符串、int 等),而常量不能包含数组。
这是PhpEd 论坛上的一位用户向我建议的。
您可以使用auto_prepend_file 指令预解析文件。将指令添加到您的配置中,并将其指向包含路径中的文件。在那个文件中添加你的常量、全局变量、函数或任何你喜欢的东西。
因此,如果您的前置文件包含:
<?php
define('FOO', 'badger');
在另一个 PHP 文件中,您可以访问该常量:
echo 'this is my '. FOO;
您可能会考虑使用框架来实现这一点。更好的是你可以使用
Include 'functions.php';
require('functions');
做 OOP 是另一种选择
IIRC 一个常见的解决方案是一个包含您的声明的普通文件,您将其包含在每个源文件中,例如“ constants.inc.php ”。在那里,您可以定义一堆应用程序范围的变量,然后将这些变量导入每个文件中。
不过,您必须在您使用的每个源文件中提供包含指令。我什至看到一些项目使用这种技术来提供多种语言的本地化。我更喜欢 gettext 方式,但对于普通用户来说,这种变体可能更容易使用。
编辑对于您的问题,我建议使用$GLOBALS[],有关详细信息,请参见示例 #2。
如果这仍然不适用,我会尝试挖掘 PHP5 对象并创建一个提供所需静态常量的静态单例(http://www.developer.com/lang/php/article.php/3345121)
如果数据是特定于用户的,那么会话将是您最好的选择,否则只需使用配置文件。配置.php:
<?php
$EL = "\n<br />\n";
?>
然后在每个页面上添加
require 'config.php'
您将能够在该页面上访问 $EL。