非常简单的问题:在PHP中,你什么时候使用
define('FOO', 1);
Run Code Online (Sandbox Code Playgroud)
你什么时候用的
const FOO = 1;
Run Code Online (Sandbox Code Playgroud)
这两者之间的主要区别是什么?
我正在开发一个具有相当大的PHP代码库的新项目.该应用程序使用了很多PHP常量(define('FOO', 'bar')),特别是对于像数据库连接参数这样的东西.这些常量都在一个配置文件中定义,该文件require_once()基本上直接由应用程序中的每个类组成.
几年前,这将是完全合理的,但从那以后我得到了单元测试错误,这种类之间的紧密耦合真的很困扰我.这些常量闻起来像全局变量,它们在整个应用程序代码中直接引用.
这还是个好主意吗?将这些值复制到一个对象并使用这个对象(即一个Bean,我说它)通过依赖注入将它们传递给与数据库交互的类是否合理?我是通过这样做来击败PHP常量的任何好处(比如速度或其他东西)吗?
我正在考虑的另一种方法是创建一个单独的配置PHP脚本进行测试.我仍然需要想办法让测试中的类使用沙箱配置脚本而不是全局配置脚本.这仍然感觉很脆弱,但可能需要对整个应用程序进行较少的彻底修改.