Не удается передать экземпляр apiClient другому классу с помощью Codeigniter - PullRequest
1 голос
/ 02 марта 2012

Я пытаюсь загрузить API календаря Google, который поставляется на PHP, но сначала, чтобы загрузить 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);

Выдается следующее сообщение об ошибке:

Аргумент 1, переданный в apiCalendarService :: __ construct (), должен быть экземпляром apiClient, ни один не задан

Однако, если я сделаю это:

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

Он выдаст эту ошибку (передал $this->apiClient в массиве):

Аргумент 1, переданный в apiCalendarService :: __ construct () должен быть экземпляром apiClient, массив задан

В чем здесь проблема?Как конкретно передать apiClient в класс apiCalendarService?

1 Ответ

1 голос
/ 02 марта 2012

Проблема здесь в том, что CodeIgniter ожидает массив в качестве первого параметра, передаваемого всем библиотекам, поэтому не все классы по умолчанию вписываются в библиотеки CI (особенно те, которые ожидают параметры конструктора).

Я вижуздесь есть два варианта:

  1. Загрузить проклятую вещь «по-старому»: include класс и создать экземпляр new apiCalendarService($this->apiClient)
  2. Создать класс-обертку, чтобы «преодолеть разрыв» междудве несовместимые структуры

Вариант # 1 - это, кстати, две строки кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...