何时使用或不使用PHP中的符号

时间:2010-03-28 14:41:03

标签: php syntax symbols

我正在阅读一本PHP书,其中作者说应该避免使用符号,除非它们有效使用它们。非常有用的东西,如果他只能详细说明或给出代码示例,但他没有。

来自经验丰富的PHP群体的人可以给我一个这些符号是什么的例子,以及何时使用它们是有意义的。我正在寻找一个代码示例,我可以解决这个问题,因为我不会用简单的英语来理解它。代码对我来说更简单英语。

修改

他说你可以将一个字符串定义为一个'符号',这将使这个字符串全局和不变,但它对安全性有好处,因为它是常量的,不能被错误地或故意地改变。我正在寻找使用这些符号的具体例子。

1 个答案:

答案 0 :(得分:6)

我认为你的意思是Constants

反对在PHP中使用它们的一个重要原因是,如果没有定义常量,PHP会将其解释为字符串值,只抛出一个通知,而不是致命错误,因为它 - 在我的拙见中 - 应该。

define("NUMBER_OF_PAGES", 1);

echo NUMBER_OF_PAGES;  // outputs "1"

echo NUMBR_OF_PAGES;   // outputs literally "NUMBER_OF_PAGES" and throws 
                       // Notice: Use of undefined constant NUMBR_OF_PAGES - 
                       // assumed 'NUMBR_OF_PAGES' in xyz

// constant() is a workaround but it takes away a lot 
// of a constant's elegance IMO:

echo constant("NUMBER_OF_PAGES"); // Returns "1"
echo constant("NUMBR_OF_PAGES"); // Returns null

这使得常量的使用有些容易出错,特别是在使用不完美的编码实践触发数十或数百条E_NOTICE消息的旧应用程序中(但没有任何地方像使用未定义的常量那样糟糕)并且很难发现错误。

您的应用程序越干净,问题就越少,因为处理(并注意到)E_NOTICE级别的消息变得可能。不过,一个未定义的常量应该是我心中的致命错误,我认为这是一个设计错误。

具有查找功能的IDE可以稍微缓解问题,并有助于避免拼写错误。

如果给定一个不存在的常量名,还有函数constant()将返回NULL。 (见上面的代码。)

具体用法示例:

常量通常用于定义当前路径和/或URL:

define("APP_WEBROOT", "http://www.mydomain.com/appname");
define("APP_WEBROOT_PATH", "/var/www/mydomain/appname");

或定义全局设置:

define("MAX_PAGES", 100);
define("MAX_ITEMS_PER_PAGE", 250);