我有一个class TestClass
,并且我想在其中动态定义一些常量,这些常量作为数组存储在config.php
文件中的$ GLOBALS中:
$GLOBALS['config'] = [
'const' => [
'A' => 'abc',
'B' => 'def',
...
]
];
是否可以(并且是一种好的做法)在类的开头使用foreach循环来定义这些常量?
class TestClass{
foreach($GLOBALS['config']['const'] as $k => $v){
const $k = $v;
}
public function doSomething(){
return self::A;
}
}
出于某种原因,是否有一种方法可以将所有这些常数保留在简单的config.php
中,还是应该手动设置const
还是应该在{{ 1}}文件?
答案 0 :(得分:0)
首先且最重要的一点是避免$GLOBALS
。它非常强大,可以在任何地方使用,但是它很容易出错,因为可以在任何php脚本中的任何地方修改它,因此要确保不会意外修改$GLOBALS
中的键会变得很痛苦。因此,$GLOBALS
尤其适合需要常量的人。现在来看常量,为什么在您已经知道值的情况下甚至需要动态创建常量。因此,如果您了解以下内容
$GLOBALS['config'] = [
'const' => [
'A' => 'abc',
'B' => 'def',
...
]
];
这意味着您知道A,B等的值。因此,我建议您执行以下操作:
创建一个说constant.php
的文件,并如下定义所有常量:
<?php
define('CONST_A', 'abc');
define('CONST_B', 'def');
现在在需要的地方添加此文件,请使用CONST_A
直接访问该值。通过这种方式,您可以在一个地方管理所有常量。
另一种方法可以通过创建如下的Constant类:
final class Constant {
const CONST_A = 'abc';
const CONST_B = 'def';
// and more
}
然后只需包含/使用Constant
类并以Constant::CONST_A
的形式访问常量