базовая активная запись codeigniter и собственный запрос - PullRequest
1 голос
/ 10 марта 2012

Я запутался в простой проблеме:

  • В чем разница между активной записью и собственным запросом?

  • Если у меня возникнут проблемы при кодировании CI, что мне делать? Есть ли проблемы стрелять? какой примерщик я должен использовать?

  • В чем разница между сеансом CI и PHP *

Спасибо за ваш ответ

Вот то, что я обнаружил в разнице, но все равно меня не узнают:

Класс Session позволяет вам поддерживать «состояние» пользователя и отслеживать его активность во время просмотра вашего сайта. Класс Session хранит информацию о сеансе для каждого пользователя в виде сериализованных (и необязательно зашифрованных) данных в файле cookie. Он также может сохранять данные сеанса в таблице базы данных для дополнительной безопасности, поскольку это позволяет сопоставить идентификатор сеанса в файле cookie пользователя с сохраненным идентификатором сеанса. По умолчанию сохраняется только файл cookie. Если вы решите использовать опцию базы данных, вам нужно будет создать таблицу сеансов, как указано ниже.

Ответы [ 2 ]

3 голосов
/ 10 марта 2012

CodeIgniter "Active Record" - это не то, что представляет собой настоящая активная запись. Активная запись похожа на вашу базу данных в форме PHP. вы взаимодействуете с ним с помощью PHP, чем с помощью SQL запросов. это похоже на ощущение, что данные базы данных находятся в PHP, а не в базе данных.

В CI их активная запись - это просто старый «построитель запросов», который строит ваш SQL-запрос чистым, выглядящим ООП-способом и возвращает чисто отформатированный результат благодаря нескольким методам, которые форматируют его по вашему вкусу (например, result_array() для результата в формате массива или result() для результата в формате объекта).

Активная запись - это подход к доступу к данным в базе данных. Таблица базы данных или представление помещаются в класс. Таким образом, экземпляр объекта привязывается к одной строке в таблице. После создания объекта новая строка добавляется в таблицу при сохранении. Любой загруженный объект получает информацию из базы данных. Когда объект обновляется, соответствующая строка в таблице также обновляется. Класс-оболочка реализует методы доступа или свойства для каждого столбца в таблице или представлении.

Фреймворк В CodeIgniter есть построитель запросов, который он называет «ActiveRecord», но который не реализует шаблон ActiveRecord. Вместо этого он реализует то, что в руководстве пользователя называется измененной версией шаблона. Функциональность ActiveRecord в CodeIgniter может быть достигнута с помощью библиотеки CodeIgniter DataMapper или CodeIgniter Gas ORM. (Википедия)

CI также использует сеансы, так же как и сеансы PHP, разница составляет , где он хранится .

Когда страница загружена, класс сеанса проверяет, существуют ли допустимые данные сеанса в файле cookie сеанса пользователя. Если данные сеанса не существуют (или если их срок действия истек), новый сеанс будет быть создан и сохранен в cookie. Если сеанс существует, его информация будет обновлена, а файл cookie будет обновлен. С каждым обновлением session_id будет обновляться. (http://codeigniter.com/user_guide/libraries/sessions.html)

в отличие от PHP, где данные сеанса остаются на сервере и идентифицируются с помощью отправленного файла cookie или переданного идентификатора сеанса, CI кодирует свои данные сеанса в сам файл cookie. именно поэтому вам необходим сеансовый «ключ» перед использованием сеансов для шифрования данных сеансов, поскольку хранение сеансов в cookie-файлах небезопасно . почему они это делают, я не знаю, может быть, для оптимизации сервера и предотвращения хранения на нем данных, жертвуя скоростями загрузки

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

Active Record предназначен для упрощения работы по выполнению повторяющихся задач в базе данных.

Обычный запрос будет выглядеть так:

$query = $this->db->query('SELECT * FROM mytable');

Где то же самое с активным будет выглядеть:

$query = $this->db->get('mytable');

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

Что касается Session, то он более или менее такой же, так как CodeIgniter - это фреймворк, который оборачивает некоторые вещи PHP, чтобы сделать вашу жизнь проще, так что вы можете использовать нативный PHP Session или тот, что из CI, на самом деле не имеет значения.

В конце, если вы не используете так много CI, просто сделайте несколько сырых PHP.

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