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

时间:2020-03-05 18:40:02  来源:igfitidea点击:

我想在php中定义这样的内容:

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

然后在我的整个网站上将该变量用作"终点"标记,如下所示:

echo "Blah blah blah{$EL}";

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

解决方案

回答

大多数PHP网站都应该在该网站的每个页面上都包含一个文件(我称其为标头)。如果将第一行代码放在头文件中,则在每个页面上都包括以下内容:

include 'header.php';

我们无需使用global关键字或者任何其他内容,我们编写的第二行代码应该可以使用。

编辑:哦,对不起,这将无法在函数内部使用...现在,我看到了问题。

编辑#2:好的,我的建议是带标题,但使用define()而不是变量。这些功能在被包含后将在功能内部工作。

回答

IIRC的一个常见解决方案是一个包含声明的纯文件,该声明包含在每个源文件中,例如" constants.inc.php"。我们可以在其中定义一堆应用程序范围的变量,然后将其导入每个文件中。

尽管如此,我们仍必须在使用的每个源文件中提供include指令。我什至看到一些项目使用这种技术来提供几种语言的本地化。我更喜欢使用gettext方式,但是对于普通用户而言,此变体可能更易于使用。

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

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

回答

如果数据是特定于用户的,则会话将是最好的选择,否则仅使用conifg文件。
config.php:

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

然后在每个页面上添加

require 'config.php'

我们将可以在该页面上访问$ EL。

回答

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

回答

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

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

回答

我们在使用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
}
?>

在我看来,就像调用类或者在函数中以及在其中包含变量一样,这是很多不需要完成的工作,并且,如果有可能,最好避免这种情况。

回答

另一种选择是使用具有公共静态属性的对象。我曾经使用$ GLOBALS,但是大多数编辑器不会自动完成$ GLOBALS。另外,未实例化的类随处可见(因为我们可以在任何地方实例化而无需告诉PHP我们将使用该类)。例子:

<?php

class SITE {
    public static $el;
}

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

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

Test();

?>

这将输出&lt;br />

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

有人在PhpEd论坛上向我建议了这一点。

回答

svec,使用PHP框架。几乎任何一个都在那里。
这是正确的方法。使用框架,我们只需输入一次
指向应用程序,因此定义站点范围内的变量非常容易,并且
有天赋的人。另外,我们也不必关心包含头文件,也不需要
检查用户是否在每个页面上都登录了像样的框架
它给你。

看:

  • Zend框架
  • CakePHP
  • Symfony
  • 小花

花一些时间学习其中之一,它很快就会还清。

回答

做这个
定义('el','\ n \ &lt;\ br /> \ n');
将其另存为el.php

那么我们可以包含要使用的任何文件,即

回声"某物"。 //注意,我只是在行尾或者前面添加el

希望有帮助

注意请删除<br后的'',因为我必须将其放入否则答案中将不会显示br标签...