Подтвердить что ты не робот

CodeIgniter: принятие решения о создании библиотеки и помощника в CodeIgniter

После разработки в CodeIgniter некоторое время мне сложно принимать решения, когда создавать пользовательскую библиотеку и когда создавать пользовательский помощник.

Я понимаю, что оба позволяют иметь в себе бизнес-логику и могут использоваться повторно через фреймворк (вызов из другого контроллера и т.д.).

Но я твердо верю, что тот факт, что основные разработчики CI отделяют библиотеки от помощников, должна быть причиной этого, и я думаю, это причина, ожидающая, когда я открою и просветлюсь.

Разработчики CI там, советуют PLS.

Я думаю, что лучше включить пример.

Я мог бы иметь

class notification_lib {
   function set_message() { /*...*/}

   function get_message() {/*...*/}

   function update_message() {/*...*/}
}

В качестве альтернативы, я мог бы также включить все функции в помощника.

В файле notification_helper.php я включу set_message(), get_message(), update_message()..

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

В обычном (без рамки) php-приложении выбор понятен, поскольку помощника нет, вам просто нужно создать библиотеку для повторного использования кодов. Но здесь, в CI, я хотел бы понять основные разработчики разделов библиотек и помощников

4b9b3361

Ответ 1

Возникает вопрос, который я задаю себе, когда решив это, что, я думаю, тоже поможет вам. Вопрос заключается в следующем: я предоставляю функцию своей структуре или консолидируюсь?

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

Однако есть также помощник формы, который помогает вам создавать HTML-формы. Большое отличие от библиотеки проверки формы заключается в том, что хелпер формы не создает новую функцию, ее просто набор связанных функций, которые помогут вам правильно писать HTML-формы.

Надеюсь, эта дифференциация поможет вам, как и мне.

Ответ 2

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

Если у вас есть просто группа функций, вам нужно всего лишь создать группу функций. Если в этой группе функций имеется много данных, вам необходимо создать класс, в котором есть экземпляр для хранения этих данных между вызовами метода (функции класса).

У вас есть много общедоступных или частных свойств для хранения, связанных с вашими уведомлениями?

Если вы используете класс, вы можете установить несколько сообщений через систему, тогда get_messages() может вернуть частный массив сообщений. Это сделало бы его идеальным для того, чтобы быть библиотекой.

Ответ 3

Сначала, вы должны быть уверены, что понимаете разницу между CI libaray и вспомогательным классом. Класс помощника - это что-то, что помогает любой готовой вещи, например array, string, uri и т.д.; они есть, и PHP уже предоставляет функции для них, но вы по-прежнему создаете помощника, чтобы добавить к ним больше функциональности. С другой стороны, libaray может быть чем-то вроде того, что вы создаете в первый раз, любым решением, которое может быть не обязательно уже там.

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

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

Спасибо

Ответ 4

Помощник содержит группу функций, которые помогут вам выполнить определенную задачу.

Доступные помощники в CI

Библиотеки обычно содержат не-CI специфические функции. Как библиотека изображений. Что-то, что переносимо между приложениями.

Доступные библиотеки в CI

Источник ссылка

Ответ 5

Если кто-то спросит меня, как вы будете следовать, когда придет время создавать помощники или библиотеки.

Я думаю, что эти различия:

  • Класс: В двух словах класс - это проект для объекта. И объект инкапсулирует концептуально связанное состояние и ответственность чего-то в вашем приложении и обычно предлагает интерфейс программирования, с которым можно взаимодействовать с ними. Это способствует повторному использованию кода и улучшает ремонтопригодность.
  • Функции: функция представляет собой фрагмент кода, который принимает еще один вход в виде параметра и выполняет некоторую обработку и возвращает значение. Вы уже видели много функций, таких как fopen() и fread() и т.д. Они встроены в функции, но PHP дает вам возможность создавать свои собственные функции.

Итак, перейдите для Class, то есть если какая-либо точка совпадает с

  • глобальная переменная должна использоваться в двух или более функциях или даже в одном, я ненавижу использование ключевого слова Global
  • инициализация по умолчанию в соответствии с каждым вызовом или загрузкой
  • некоторые задачи являются частными для сущности, которые не открываются публично, думают, что функции никогда не имеют общественных модификаторов, почему? Функция
  • для работы зависимостей, то есть задачи разделены, но ей нужны две или более задачи. Подумайте о проверке validate_email только для отправки по электронной почте script для, cc, bcc и т.д. все это требует validate_email.
  • И, наконец, не все связанные задачи, то есть функции должны быть помещены в один объект или файл, проще для ссылки и запоминания.

Для помощников: любая точка, которая не соответствует библиотекам

Ответ 6

Лично я использую библиотеки для больших вещей, скажем, FTP-библиотеку, которую я построил, намного быстрее, чем поставляемая библиотека CodeIgniters. Это класс с множеством методов, которые обмениваются данными друг с другом.

Я использую помощники для небольших задач, которые не связаны с множеством других функций. Примером могут служить небольшие функции, такие как украшение строк. Или скопируйте каталог рекурсивно в другое место.