css, html, php, javascript, jQuery, ajax … – решения, примеры, рецепты
6 Мар
В этом цикле статей я хочу рассказать о таком замечательном фреймворке, как yii. Предполагается, что у читателя есть некоторый навык работы с php5, особенно с его объектно-ориентированной частью. Я буду стараться охватить как можно больше разных аспектов создания веб-приложений на базе yii, добавляя от себя разные тонкости и хитрости; но не ждите от меня копипаста документации или api. И то и другое Вы можете найти на официальном сайте.
Что такое Yii?
Yii это свободный(распространяется под new BSD licence) высокопроизводительный объектно-ориентированный расширяемый php-фрэймворк для разработки веб-приложений.
Зачем он нужен?
Для удобной разработки веб-приложений и чтобы не изобретать сто раз изобретенный велосипед.
Системные требования:
Рекомендуемые расширения для php:
Такой нехитрый набор в наше время можно найти почти на любом хостинге.
Для домашнего тестирования на linux можно установить пакеты из стандартных репозитариев.Если же Вы предпочитаете на windows, могу порекомендовать в качестве готового решения denwer.
Для пользователей денвера:
(В данном случае, Z: это диск, монтируемый денвером)
1. Для начала прописываем в переменные окружения путь Z:\usr\local\php5\
2. Открываем /usr/local/php5/php.ini, ищем строчку extension_dir = «/usr/local/php5/ext», заменяем на extension_dir = «Z:\usr\local\php5\ext»
3. session.save_path = «/tmp» на session.save_path = «Z:\tmp»
На момент написания статьи, последняя стабильная версия была 1.1.0. Скачать её можно в виде архива по адресу http://yiiframework.com/download
Вся установка сводится к распаковке содержимого архива.Для начала рекомендую распаковать всё в директорию доступную из веб и открыть папку requirments в браузере, чтобы убедиться в наличии всех необходимых компонентов.
Для создания приложения необходимо использовать коммандную строку(ssh при удалённом доступе). Нужно запустить файл yiic.bat(для windows) или yiic(для linux и других unix-based систем) с параметрами webapp /full/path/to/new/wbebapp/.
Например :
$ /var/www/framework/yiic webapp /var/www/testing
Убедитесь, что у вас есть права записи в директорию, где Вы хотите создать веб-приложение и она доступна из web. Можно зайти в нее через браузер и увидеть возможности, предоставлямые yii «из коробки».
Практикой мы займемся в следующей статье, а теперь немного теории.
Модель – Представление – Контроллер(MVC) – это модульная архитектура, применяющийся в веб-программировании(в частности и в yii). Она направлена на разделение логики(контроллер), управления данными(модель) и пользовательского интерфейса(представление) с целью возможности изменять одни части не внося изменения в другие.
В yii имена всех системных классов начинается с перфикса C , с целью недопущения коллизии имён. По этому, пожалуйста, воздержитесь от использования этого префикса в своих классах.
Входной файл
Входной файл(обычно index.php) это единственный скрипт, с которым контактирует пользователю. Вобщем-то, всё что он делает, это читает конфигурацию и создаёт экземпляр класса CWebApplication.
Приложение(application)
Приложение(экземпляр класса CWebApplication) обрабатывает запрос пользователя, выполняет роутинг и передаёт его на исполнение соответствующему контроллеру.
Контроллер(controller)
Контроллер(экзэмпляр класса CController или производного от него) определяет основную логику приложения, взаимодействует с моделями и отображениями. Контроллеры обычно находятся в папке /protected/controllers. По соглашению, класс контроллера и имя файла с ним : NameController.php
Действие(action)
Действие это тип действия, выполняемого пользователем, например просмотр статьи в блоге или отправка комментария. Обычно является методом контроллера(вида actionName), но может быть вынесенно в отдельный класс.
Модель (model)
Модель представляет собой сущность данных. Например таблица в базе данных(CActiveRecord) или форма на веб-странице(CForm). Она занимается непосредственной обработкой данных: созданием, получением, изменением. Также представляет интерфейс доступа к валидаторам(validator), проверяющим корректность введённых пользователем данных. Модели находятся в папке /protected/models. Модель обычно имеет имя, соответствующее таблице в бд, которую она представляет.
Представление(view)
Представление генерирует готовые части страницы, отдаваемой пользователю.Оно не использует логики, кроме как условий и циклов. Представления для каждого контроллера обычно раздельны и хранятся в /protected/views/controllername/.
Макет (layout)
Макет это специальное представление для вставки других представлений. Обычно он содержит части пользовательского интерфейса, используемого другими представлениями. Например, основной макет может содержать в себе шапку и подвал страницы, места для подключения других представлений и виджетов. Макеты храняться в /protected/views/layouts. По умолчанию используется макет main.php.
Виджет(widget)
Виджет это компонент для генерации самодостаточного элемента пользовательского интерфейса(например, верхнее меню в тестовом приложении). В zii (библиотеке расширений, поставляемых вместе с yii) имеется большое количество готовых виджетов.
Компонент(component)
Представляет сущность какого-либо аспекта веб-приложения. Например, авторизация пользователей. В yii много готовых компонентов, которые могут использоваться как в готовом виде, так и расширяться веб-разработчиками.
Модуль(module)
Модуль, это самодостаточная единица, состоящая из контроллеров, моделей, отображений, и.т.д. Модули используются для разделения сайта на логические части, например форум и блог.
В первой статье мы узнали, что такое yii, познакомились с базовыми понятиями и подготовили полигон для дальнейшего изучения.
И на последок хочу дать несколько полезных ссылок:
В следующей статье мы познокомимся со внутренним устройством фреймворка, научимся делать собственные контроллеры, модели и отображения, изучим основы ActiveRecord.
Отзывов (18) на «Yii framework. Часть 1 : Введение»
Yii после CI это как Renault после Жигулей. И то и другое ездит, но качество сборки разное.
Лично меня Yii, по началу, отпугнул несколько специфичным способом конфигурирования. Но сейчас, вроде, привык. Однако до сих пор остаётся ощущение что Yii это framework «для своих». Очень много вещей сделано исключительно на использовании именно его компонентов. В частности – работа с базой данных. И грядущая версия 1.1.1 с её CActiveForm тому подтвеждение. Так что, лично мне, приходится писать свои компоненты для работы с Doctrine (CDoctrineDataProvider, CDoctrineForm…).
Это и не хорошо и не плохо, просто это есть.
А вообще, лично моя оценка yii на все 10 баллов из 10. Шустрый, много возможностей, достаточно легко расширяемый.
Круто. Недавно узнал про него, хотел начать изучать а тут Вы! Изучим вместе!
Yii прекрасный фреймворк, делал на нем несколько проектов. Единственно что я ощутил – это нехватку документации, по некоторым вопросам приходилось лезть в недра и смотреть как работает
в целом – штука супер!
VanSanblch, нет желания поделиться с общественностью вашими наработками для Yii?
Замечательная идея –
Осовной недостаток Yii – нехватка статей и документации. Особенно на русском – хотя и есть замечательные сайты, вроде yiiframework.ru
Отзывы обычно о нем превосходные
«Макет это специальное представление для декодирования других…» имелось ввиду декоРирование ?
Поправил на «для вставки других представлений». Декодирование действительно, как то странно.
Спасибо Вам за статьи о JQuery, они очень познавательны. И я очень рад что вы начали писать ряд статей о Yii, как раз начал его изучать после CI )
Всегда пожалуйста, только прошу отметить, что число авторов этого блога сейчас уже выросло до 3-х
А именно эта статья, первая из запланированного цикла, написана автором M4V23.
Спасибо за ссылку на мой блог
Ваши статьи по jquery давно читаю
Здравствуйте! Вопрос по установке: может кто расскажет по подробней про прописывание переменной оружения, что? где? куда?
Речь идёт о переменной окружения PATH, которая нужна, чтобы не приходилось каждый раз вводить полный путь к таким программвм как php.
SET PATH=%PATH%;Z:\usr\local\php5
Пытаюсь использовать yiic shell но выдёт ошибку
Error: index.php does not exist or is not an entry script file.
Подскажите где копать?)
я только задумался о выборе инструментария, колеблюсь между симфони и Yii. хотелось бы ваше мнение на этот счет услышать.
to Саня Горбунов
вы ожидаете что в топике про yii начнут рассказывать что симфони лучше?
Когда же будет продолжение?
Саня Горбунов: я не так уж много работал с симфонией, чтобы говорить что-то определённое, но yii мне понравился больше.
mandarin: думаю, на этой-следующей неделе выложу ещё 2 части.
Спасибо за познавательность материалов.
Лично я JQuery только по вашему сайту изучал. Сначала как слепой котенок, сейчас уже не подглядывая в документацию – в общем мое уважение к вам безгранично ))))
Оставьте отзыв