我有一个现有的控制器(classA),它需要使用一个新的辅助类(classB)。通常我会将 classB 放入库中并执行
$this->load->library('classb');
$this->classb->method();
但是,我遇到了一个问题,我在 classB 中定义构造函数所需的 const
classB {
const MYDEFINE = 1;
...
}
这种方法的问题是 MYDEFINE 的定义在我加载库之前不可用,但我需要创建带有参数的 $params 数组以发送 classB 构造函数。所以我得到了一个鸡与蛋的案例
$params = array();
$params['open_mode'] = classB::MYDEFINE;
$instance = $this->load->library('classB', $params);
我已经能够通过不使用库来解决这个问题 - 而是在我的 classA 控制器中使用 @include_once('classB') ,它工作正常。因此文件 classB.php 存储在控制器目录中。
我想知道其他人是否遇到过这个问题以及他们如何解决这个问题(除了在其他地方去除 const 之外)。我查看了 PhilSurgeon ( http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY ) 的一篇关于替代方法的帖子,但它不太适合这个问题(至少我不这么认为)。