кладах типу Hello world. Тести показують час ініціалізації фреймворків, і на підставі їх можна лише зробити висновок, що Yii має якісну підсистему відкладеної ініціалізації (тобто, код завантажується тільки тоді, коли він необхідний). Підтвердженої інформації про те, що Yii в «бойових умовах» працює швидше, ніж інші фреймворки, немає.
У блогосфері можна знайти масу статей з порівняльним аналізом фреймворків. В цілому, простежуються такі тенденції:
Yii активно розвивається.
Yii не виглядає «монстром» в порівнянні з фреймворками symfony і Zend Framework (у яких число рядків коду порівняти з числом рядків коду операційних систем).
У деяких порівняльних роботах відзначається висока швидкість вивчення фреймворку, отримання результатів і прототипування по порівнянні з Zend Framework і Symfony. Також наголошується його стабільність і безпеку.
2.2 Паттерн MVC
Model-view-controller - схема використання декількох шаблонів проектування, за допомогою яких модель даних програми, користувальницький інтерфейс і взаємодія з користувачем розділені на три окремих компонента таким чином, щоб модифікація одного з компонентів надавала мінімальний вплив на інші. Дана схема проектування часто використовується для побудови архітектурного каркаса, коли переходять від теорії до реалізації в конкретній предметній області.
Концепція MVC була описана Трюгве Реенскаугом в 1979 році, у той час працювала над мовою програмування Smalltalk в Xerox PARC. Оригінальна реалізація описана в статті «Applications Programming in Smalltalk - 80: How to use Model-View-Controller». Потім Джим Алтофф з командою розробників реалізували версію MVC для бібліотеки класів Smalltalk - 80.
У оригінальної концепції була описана сама ідея і роль кожного з елементів: моделі, подання та контролера. Але зв'язки між ними були описані без конкретизації. Крім того, розрізняли дві основні модифікації:
а) Пасивна модель - модель не має жодних способів впливати на подання або контролер, і використовується ними як джерело даних для відображення. Всі зміни моделі відслідковуються контролером і він же відповідає за перерисовку уявлення, якщо це необхідно. Така модель частіше використовується в структурному програмуванні lt; # justify gt; б) Активна модель - модель оповіщає уявлення про те, що в ній відбулися зміни, а уявлення, які зацікавлені в оповіщенні, підписуються на ці повідомлення. Це дозволяє зберегти незалежність моделі як від контролера, так і від уявлення. Класичною реалізацією концепції MVC прийнято вважати версію саме з активною моделлю.
З розвитком об'єктно-орієнтованого програмування і поняття про шаблони проектування був створений ряд модифікацій концепції MVC, які при реалізації у різних авторів можуть відрізнятися від оригінальної. Так, наприклад, Еріан Верми в 2004 році описав приклад узагальненого MVC.
Основна мета застосування цієї концепції полягає в поділі бізнес-логіки (моделі) від її візуалізації (уявлення, виду). За рахунок такого поділу підвищується можливість повторного використання. Найбільш корисно застосування даної концепції в тих випадках, коли користувач повинен бачити ті ж самі дані одночасно в різних контекстах та/або з різних точок зору. Зокрема, виконуються наступні завдання:
а) До однієї моделі можна приєднати кілька видів, при цьому не зачіпаючи реалізацію моделі. Наприклад, деякі дані можуть бути одночасно представлені у вигляді електронної таблиці, гістограми і кругової діаграми.
б) Не торкаючись реалізацію видів, можна змінити реакції на дії користувача (натискання мишею на кнопці, введення даних), для цього досить використовувати інший контролер.
в) Ряд розробників спеціалізується тільки в одній з областей: або розробляють графічний інтерфейс, або розробляють бізнес-логіку. Тому можливо домогтися того, що програмісти, що займаються розробкою бізнес-логіки (моделі), взагалі не будуть інформовані про те, яке уявлення буде використовуватися.
MVC дозволяє розділити дані, подання та обробку дій користувача на три окремих компонента (Рисунок 2.1):
а) Модель. Модель надає знання: дані і методи роботи з цими даними, реагує на запити, змінюючи свій стан. Не містить інформації, як ці знання можна візуалізувати.
б) Уявлення, вид. Відповідає за відображення інформації (візуалізацію). Часто як уявлення виступає форма (вікно) з графічними елементами.
в) Контролер. Забезпечує зв'язок між користувачем і системою: контролює введення даних користувачем і використовує модель та подання для реалізації необхідної реакції.
...