PHP:如何定义一个可由多个文件访问的常量?

问题描述 投票:0回答:6

基本的 PHP 设计问题:我想定义几个常量,可供我网站中的所有文件访问。如果我使用define(),我必须为每个类执行此操作,这看起来很愚蠢,因为如果/当我为将来的版本更改该常量时,我将必须在每个文件中更改它。一种选择是将其放入一个文件中,然后在我的所有源文件中 require_once 该文件,但这似乎也太多了。有没有地方可以定义常量,以便它在文件中是全局的?

例如:

定义('MAX_ELEMENTS', 5);

在将来的某个时候,我可能会将其更改为 6。我在业务逻辑中到处都使用 MAX_ELEMENTS。

php constants
6个回答
1
投票

真正做到这一点的方法是

require_once()
在每个需要它的文件中定义常量的文件,并且在 PHP 应用程序中的每个或几乎每个文件中都有一组包含并不罕见。

如果您的类层次结构允许,基类可以定义类常量,该常量由子类继承。


0
投票

网站上的所有(或大多数)脚本使用单个规范的包含文件是很常见的。 PHP 甚至有

auto_prepend_file
来实现这一点。


0
投票

常量在每个范围内自动可用,除了由 php 本身定义的常量之外,没有预定义的常量。幸运的是,php 解释器往往非常小,并且绝对没有理由不在您的项目中包含文件

constants.php
,然后在需要时
require_once


0
投票

常量的要点是只能定义一次。因此,正如您所说,您“不”在每个文件中定义它。因此,您唯一的选择就是将其定义在一个文件中,然后在需要的地方使用该文件。这并不过分,这是正常的作案方式。

除了其他答案之外,如果您的应用程序变得足够复杂,请考虑不再使用常量来存储配置。它们目前可能没问题,但是如果您想要包含来自另一个库的一些代码,并且想要使用相同的名称但出于不同的目的定义常量,会发生什么情况呢?像 

Zend_Config

0
投票

在类的上下文中,如果某些常量应该可以从多个类访问,例如在Apple类中,我们需要访问const MY_CONST,并且我们还需要在Orange类中访问相同的MY_CONST,然后我们可以创建一个接口sharedConst并将常量放入其中,然后我们可以告诉Apple类(和Orange)实现共享常量接口。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.