无法使用Codeigniter将apiClient实例传递给另一个类

时间:2012-03-01 23:41:00

标签: php codeigniter google-calendar-api

我正在尝试加载PHP中的Google日历API,但首先要加载API,我需要将apiClient类实例传递给另一个类,因此我没有成功我正在使用Codeigniter加载apiClient库,但无法加载第二个类。

我做了什么:

$this->load->library('google/apiClient', NULL, 'apiClient');

echo gettype($this->apiClient); // object

// This class needs the `apiClient` class to be passed to this, but fails
$this->load->library('google/contrib/apiCalendarService', $this->apiClient);

抛出的错误是:

  

传递给apiCalendarService :: __ construct()的参数1必须是apiClient的一个实例,没有给出

但是,如果我这样做:

$this->load->library('google/contrib/apiCalendarService', array($this->apiClient));

它将抛出此错误(在数组中传递$this->apiClient):

  

传递给apiCalendarService :: __ construct()的参数1必须是apiClient的一个实例,给定数组

这是什么问题?如何将apiClient专门传递给apiCalendarService类?

1 个答案:

答案 0 :(得分:1)

这里的问题是CodeIgniter期望一个数组作为传递给所有库的第一个参数,因此并非所有类都默认适合作为CI库(特别是那些期望构造函数参数的类)。

我在这里看到两个选项:

  1. 以“旧方式”加载这件事:include该类并实例化new apiCalendarService($this->apiClient)
  2. 创建一个包装类,以“弥合两个不兼容的框架之间的差距”
  3. 顺便提一下,选项#1是两行代码。