8

我想在php中定义这样的东西:

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

然后将该变量用作我网站上的“结束线”标记,如下所示:

echo "Blah blah blah{$EL}";

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

4

11 回答 11

7

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

 include 'header.php';

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

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

编辑#2:好的,将我最初的建议与标题一起使用,但使用define()而不是变量。那些在被包含后在函数内部工作。

于 2008-08-16T05:23:09.677 回答
3

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

于 2008-08-16T08:44:31.847 回答
2

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

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

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

希望这有帮助

注意请删除 < br 之后的“\”,因为我必须把它放进去,否则它不会在答案上显示 br 标记...

于 2010-12-13T20:03:44.077 回答
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
}
?>

在我看来,调用类或在函数中包含变量以及 out 是很多不需要完成的工作,而且,如果可能的话,最好避免这种情况。

于 2008-08-16T11:21:08.037 回答
0

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

function myFunc()
 {
require 'config.php';
//Variables from config are available now.
 }
于 2008-08-16T09:26:18.017 回答
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 论坛上的一位用户向我建议的。

于 2008-09-09T22:59:23.913 回答
0

svec,使用 PHP 框架。随便——那里有很多。这是正确的做法。使用框架,您的应用程序只有一个入口点,因此定义站点范围的变量既简单又自然。此外,您不需要关心包含头文件,也不需要检查用户是否在每个页面上都登录 - 体面的框架会为您完成。

看:

花一些时间学习其中之一,它很快就会得到回报。

于 2008-09-10T09:13:12.783 回答
0

您可以使用auto_prepend_file 指令预解析文件。将指令添加到您的配置中,并将其指向包含路径中的文件。在那个文件中添加你的常量、全局变量、函数或任何你喜欢的东西。

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

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

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

echo 'this is my '. FOO;
于 2020-01-26T22:29:48.367 回答
0

您可能会考虑使用框架来实现这一点。更好的是你可以使用

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

做 OOP 是另一种选择

于 2020-08-31T22:43:56.817 回答
-1

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

不过,您必须在您使用的每个源文件中提供包含指令。我什至看到一些项目使用这种技术来提供多种语言的本地化。我更喜欢 gettext 方式,但对于普通用户来说,这种变体可能更容易使用。

编辑对于您的问题,我建议使用$GLOBALS[],有关详细信息,请参见示例 #2

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

于 2008-08-16T05:27:22.260 回答
-1

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

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

然后在每个页面上添加

require 'config.php'

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

于 2008-08-16T05:34:03.480 回答