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


44

После разработки в 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, я хотел бы понять основные разработчики, разделяющие библиотеки и помощники.

+4

Library = класс, помощник = файл с некоторыми методами в нем. Если я правильно ее помню ... 02 мар. 102010-03-02 07:05:53

25

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

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

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

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

+1

Phil, когда дело доходит до этого, два менталитета не так уж различны. когда вы объединяете функции, вам не нужно передавать информацию между функциями. Но бывают случаи, когда вы хотите передавать информацию между функциями, но не создавайте для нее библиотеку. И мое предложенное мышление справляется с этим делом. дают библиотеки, которые обычно создаются для защиты от них. В библиотеках вам рекомендуется (/ требуется) использовать свои функции, помощники есть и могут быть вызваны всякий раз. Это то, что я принимаю во внимание при проектировании. 04 мар. 102010-03-04 16:31:10


0

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

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

+3

Я думаю, что ключевым понятием здесь является «класс с множеством методов, которые обмениваются данными друг с другом». 02 мар. 102010-03-02 11:20:11

+1

Я думаю, что «декоратор» - это ключевая концепция. Например, если я хочу добавить и добавить тег div в строку, которая определенно является вспомогательной функцией. Функция не заботится о других данных или сохраняет данные для выполнения задания. Также он может использоваться и использоваться везде. 16 ноя. 102010-11-16 18:00:34


57

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

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

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

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

  0

да, это имеет смысл ... 02 мар. 102010-03-02 11:16:46

+1

вам нужно дать взятку. : p +1 03 мар. 102010-03-03 03:49:44

+3

Меня обманули! О, шок, ужас, непристойность! Разве кто-нибудь не подумает о детях! : '( 04 мар. 102010-03-04 08:53:49

+1

+1 для вашего комментария. Спасибо, Фил. Вы только что сделали мой день lol 04 май. 122012-05-04 03:36:13

  0

, это должен быть ответ imo 30 сен. 152015-09-30 10:21:54


7

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

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

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

Благодаря


3

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

Available helpers in CI

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

Available libraries in CI

Источник link


2

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

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

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

Так что для класса т.е. библиотеки, если какой-либо один пункт соответствует

  1. глобальной переменной необходимо использовать в двух или более функций или даже один, я ненавижу, используя глобальное ключевое слово
  2. инициализации по умолчанию как за каждый раз вызов или нагрузка
  3. некоторые задачи являются частными для сущности, которые не открываются публично, думают, что функции никогда не имеют общественных модификаторов, почему?
  4. функции для зависимостей функций, то есть задачи разделены, но им нужны две или более задачи. Подумайте о проверке validate_email только для сценария отправки электронной почты для, cc, bcc и т. Д. все это требует validate_email.
  5. И, наконец, не все связанные задачи, то есть функции должны быть помещены в один объект или файл, проще для справки и запоминания.

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