基本的 PHP 设计问题:我想定义几个常量,可供我网站中的所有文件访问。如果我使用define(),我必须为每个类执行此操作,这看起来很愚蠢,因为如果/当我为将来的版本更改该常量时,我将必须在每个文件中更改它。一种选择是将其放入一个文件中,然后在我的所有源文件中 require_once 该文件,但这似乎也太多了。有没有地方可以定义常量,以便它在文件中是全局的?
例如:
定义('MAX_ELEMENTS', 5);
在将来的某个时候,我可能会将其更改为 6。我在业务逻辑中到处都使用 MAX_ELEMENTS。
真正做到这一点的方法是
require_once()
在每个需要它的文件中定义常量的文件,并且在 PHP 应用程序中的每个或几乎每个文件中都有一组包含并不罕见。
如果您的类层次结构允许,基类可以定义类常量,该常量由子类继承。
网站上的所有(或大多数)脚本使用单个规范的包含文件是很常见的。 PHP 甚至有
auto_prepend_file
来实现这一点。
常量在每个范围内自动可用,除了由 php 本身定义的常量之外,没有预定义的常量。幸运的是,php 解释器往往非常小,并且绝对没有理由不在您的项目中包含文件
constants.php
,然后在需要时 require_once
。
常量的要点是只能定义一次。因此,正如您所说,您“不”在每个文件中定义它。因此,您唯一的选择就是将其定义在一个文件中,然后在需要的地方使用该文件。这并不过分,这是正常的作案方式。
除了其他答案之外,如果您的应用程序变得足够复杂,请考虑不再使用常量来存储配置。它们目前可能没问题,但是如果您想要包含来自另一个库的一些代码,并且想要使用相同的名称但出于不同的目的定义常量,会发生什么情况呢?像 Zend_Config