如何在php中设置站点范围的变量?
我想在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(); ?>
这将输出<br />
这也比成本法更容易处理,因为我们可以在属性(数组,字符串,整型等)中放置任何类型的值,而常量不能包含数组。
有人在PhpEd论坛上向我建议了这一点。
回答
svec,使用PHP框架。几乎任何一个都在那里。
这是正确的方法。使用框架,我们只需输入一次
指向应用程序,因此定义站点范围内的变量非常容易,并且
有天赋的人。另外,我们也不必关心包含头文件,也不需要
检查用户是否在每个页面上都登录了像样的框架
它给你。
看:
- Zend框架
- CakePHP
- Symfony
- 小花
花一些时间学习其中之一,它很快就会还清。
回答
做这个定义('el','\ n \ <\ br /> \ n');
将其另存为el.php
那么我们可以包含要使用的任何文件,即
回声"某物"。 //注意,我只是在行尾或者前面添加el
希望有帮助
注意请删除<br后的'',因为我必须将其放入否则答案中将不会显示br标签...