2011-02-10 12 views
6

Я googled, и мне сообщили, что библиотека состоит из нескольких соответствующих классов. Но в Codeigniter я обнаружил, что в каждой библиотеке есть только один класс. Извините за мои ограниченные знания для этого, но я был бы признателен, если бы вы могли немного рассказать об этом. Большое спасибо!В чем разница между классом и библиотекой?

+2

i библиотека, возможно, не имеет ничего общего с классами, это может быть просто набор процедурных функций. класс имеет четко определенное определение, библиотека, по крайней мере, в php. –

ответ

9

Разница является семантической.

Класс является реализацией определенной части функциональности (как правило, полностью инкапсуляции функциональность.

Библиотека представляет собой совокупность единиц функциональности (или только один), добавляющие функциональность. Примечание I старался держаться подальше от слова класса в этом определении. Библиотеки могут быть процедурными, функциональными или ООП. это не умаляет тот факт, что это библиотека. Классы просто помогают абстракциям при работе с объектно-ориентированным программированием.

A Framework - это библиотека, предоставляющая выбор архитектуры для написания кода.

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

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

4

В общих условиях программирования не каждая библиотека должна состоять из нескольких классов. На самом деле не все библиотеки также должны состоять из классов - это действительно зависит от реализации (а иногда и от языка). Как Wikipedia начинается (курсив мой):

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

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

1

Проверка the CodeIgniter docs:

Когда мы используем термин «Библиотеку» мы обычно относящийся к классам, которые находятся в каталоге библиотек и описанные в классе Reference этого руководства пользователя. В этом случае, однако, мы опишем, как вы можете создавать свои собственные библиотеки в каталоге приложений/библиотек, чтобы поддерживать разделение между вашими локальными ресурсами и глобальными ресурсами.

Я не думаю о «библиотеке» как о фиксированном количестве классов или файлов. Означает ли эта цитата конкретное использование, которое вас смутило?

Смежные вопросы