Несколько классов в Codeigniter

Я хочу создать массив объектов, поэтому я создал библиотеку, но не могу понять, как на самом деле динамически создавать ее экземпляры в цикле и сохранять каждый экземпляр в массиве. Может кто-нибудь сказать мне, пожалуйста?

3 ответа

Решение

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

Лучшим решением, вероятно, является создание собственного класса вместо использования механизма загрузки библиотеки CI. Таким образом, вы можете создавать и хранить столько копий, сколько вам нужно.

РЕДАКТИРОВАТЬ: Я бы предложил оставить класс в каталоге библиотеки и просто использовать PHP include(), чтобы сделать его доступным для ваших моделей / контроллеров, где это необходимо.

Что касается доступа к CodeIgniter из вашего класса, вы можете сделать это, используя следующий код:

$CI =& get_instance();

$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');

Функция get_instance() возвращает суперобъект CodeIgniter, и как только она назначена переменной $CI, вы можете получить доступ к любому из методов CI, как и в модели или контроллере, за исключением использования $CI вместо $this. Смотрите эту ссылку для получения дополнительной информации.

Чтобы создать 100 объектов, вам просто нужно выполнить цикл от 0 до 99, каждый раз создавая объект и сохраняя его в массиве.

class Foo { ... }

$fooArray = array();
for ($i = 0; $i < 100; $i++) {
    $fooArray[] = new Foo();
}

Я не уверен, что этот вопрос имеет отношение к CodeIgniter. Есть еще что-то, что вы не упоминаете?

Пожалуйста, проверьте эту ссылку: я думаю, что это лучший способ сделать это:

Создание объекта из класса в Codeigniter

В нем используется код Code Igniter, но он позволяет использовать "новое" слово, как и любое другое приложение ООП.

Я надеюсь, что это поможет вам.

Другие вопросы по тегам