基本的PHP设计问题:我想定义一些可以访问我网站中所有文件的常量。如果我使用define(),我必须为每个类做这个,这似乎很愚蠢,如果/当我为将来的版本更改该常量时,我将不得不在每个文件中更改它。一种选择是将它放在一个文件中然后在我的所有源文件中require_once该文件,但这似乎也过分了。有没有我可以定义常量的地方,以便它跨文件是全局的?
例如:
define('MAX_ELEMENTS',5);
在将来的某个时候,我可能会将其更改为6.我在所有业务逻辑中使用MAX_ELEMENTS。
答案 0 :(得分:1)
实现它的方法实际上是require_once()
在每个需要它的文件中定义常量的文件,并且在每个或几乎每个文件中都有一组包含的情况并不少见。 PHP应用程序。
如果您的类层次结构允许它,基类可以定义类常量,它由子类继承。
答案 1 :(得分:0)
常量在每个范围内自动可用,除了常量defined by php itself之外,没有预定义的常量。幸运的是,PHP解释器往往非常小,并且绝对没有理由不在项目中包含文件constants.php
,然后在需要时require_once
。
答案 2 :(得分:0)
常数的关键点只能定义一次。因此,正如您所说,您不在每个文件中定义它。因此,您唯一的选择是将其定义在一个文件中,并require_once
将文件定义在任何需要的位置。这并不过分,这是正常的作案手法。
答案 3 :(得分:0)
在您的网站上使用所有(或大多数)脚本使用的单个规范包含文件是很常见的。 PHP甚至允许auto_prepend_file
来实现此目的。
答案 4 :(得分:0)
除了其他答案之外,如果您的应用程序变得足够复杂,请考虑从使用常量转移到存储配置。它们现在可能没什么问题,但是如果你想要从另一个库中包含一些想要用同一名称定义常量但是用于不同目的的代码会发生什么呢?像Zend_Config这样的东西现在可能有些过分,但请记住常量是非常钝的工具,所以将它们的使用限制在真正的特殊情况下是值得的。