Несколько классов в Codeigniter - PullRequest
4 голосов
/ 12 апреля 2010

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

Ответы [ 3 ]

1 голос
/ 12 апреля 2010

По умолчанию загрузка библиотеки 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 , См. эту ссылку для получения дополнительной информации.

1 голос
/ 12 апреля 2010

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

class Foo { ... }

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

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

0 голосов
/ 03 июня 2010

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

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

Используется код Code Igniter, но он позволяет использовать слово «новый», как любое другое приложение ООП.

Надеюсь, это поможет вам.

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