Использование PHP фреймворков в разработке сайта

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    29,64 Кб
  • Опубликовано:
    2012-05-30
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Использование PHP фреймворков в разработке сайта

Министерство Просвещения Республики Молдова

Бэлцкий Государственный Университет им. А. Руссо

Факультет Реальных Наук

Кафедра прикладной информатики и информационных технологий








Лицензионная работа на тему:

ИСПОЛЬЗОВАНИЕ PHP ФРЕЙМВОРКОВ В РАЗРАБОТКЕ САЙТА

Выполнил: Евгений Иванов

Студент дневного отделения, группа IS33Z

Специальность “Информатика и точные науки”

Код 141.02

Научный руководитель:

Лектор университета, магистр, Килат С.





Бэлць, 2012

Содержание

ВВЕДЕНИЕ

. PHP-ФРЕЙМВОРК

.1 Фреймворк программной системы

.2 Концепция PHP фреймворков.

.3 Случаи использования PHP фреймворка.

.4 Обзор современных фреймворков

1.4.1 Zend Framework

.4.2 CakePHP

.4.3 Kohana

.4.4 Codeigniter

1.4.5 Symfony

.4.6 Yii

.5 Сравнение популярных фреймворков

.6 Преимущества использования

.7 Недостатки применения

.8 Выбор оптимального фреймворка для разработки сайта

.8.1 Поддержка баз данных

.8.2 Поддержка сообщества

.8.3 Документация

.8.4 Производительность

.8.5 Безопасность

.8.6 Порог вхождения

.8.7 Скорость разработки

.8.8 Model View Controller архитектура

.8.9 Скорость развития фреймворка

.8.10 Обратная совместимость

.8.11 Наличие встроенных javascript-библиотек

.8.12 Поддержка со стороны хостинга

.9 Распространенные ошибки при выборе фреймворка.

. РАЗРАБОТКА ПРОЕКТА

.1 Приложения, использованные при разработке проекта

.1.1 Пакет для web-разработки «Denwer»

.1.2 Система управления СУБД MySQL “HeidiSQL”

.1.3 Редактор программного кода PhpStorm

.2 Разработка дизайна проекта и верстки

.3 Проектирование и создание базы данных

.4 Создание основы приложения и конфигурация

.5 Генерация каркаса кода с помощью кодогенератора Gii

.6 Установка верстки и доработка каркаса

.6.1 Настройка макета

.6.2 Настройка представлений видимых для посетителей

.6.3 Доработка правил валидации моделей и провайдеров данных

.6.4 Настройка представлений администратора

.7 Настройка кэширования, многоязычности и «красивых» ссылок

ЗАКЛЮЧЕНИЕ

БИБЛИОГРАФИЯ

ВВЕДЕНИЕ

- это высокоэффективный основанный на компонентной структуре PHP-фреймворк для разработки масштабных веб-приложений. Он позволяет максимально применить концепцию повторного использования кода и может существенно ускорить процесс веб-разработки. Название Yii (произносится как Yee или [ji:]) означает простой (easy), эффективный (efficient) и расширяемый (extensible).

Для запуска веб-приложений, построенных на Yii, вам понадобится веб-сервер с поддержкой PHP версии 5.1.0.

Для разработчиков, желающих использовать Yii, крайне полезным будет понимание концепции объектно-ориентированного программирования (OOП), так как Yii - это строго объектно-ориентированный фреймворк.

Целью работы является иследование работы фреймворка Yii и использование языка программирования PHP в созданий приложения на Yii

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

Работа содержит введение, 2 главы, заключения и библиографию.

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

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

Работа содержит 30 страниц, 1 рисунок, 1 таблиц и 13 источников.

1. PHP-ФРЕЙМВОРК

 

1.1 Фреймворк программной системы

фреймворк база данное библиотека

Фреймворк (англ. <#"550582.files/image001.gif">

Сейчас большинство PHP проектов построены при помощи архитектуры Model View Controller(MVC). MVC - это архитектурный шаблон проектирования, который используется в большинстве языков программирования и позволяет отделить бизнес-логику от пользовательского интерфейса, а так же выделить область логики которая производит обмен информации между базой данных и пользовательским интерфейсом. Таким образом можно изменить логику приложения, не затрагивая интерфейсной части, либо наоборот, что очень хорошо для дизайнеров и верстальщиков. Это позволяет избежать путаницы и упрощает весь процесс разработки. Когда говорится о MVC, то имеется ввиду: Model - та часть архитектуры, которая взаимодействует с базой данных, View - представляет ту часть, которую непосредственно видит пользователь, то есть графический интерфейс, и Сontroller - это область логики, которая контролирует и управляет всеми ее составляющими и данными. Большинство современных фреймворком берут за основу именно архитектуру MVC. Так же в современном фреймворке используется шаблон проектирования Front Controller, который, в зависимости от запроса, перенаправляет его на нужный контроллер. Без Front Controller разработка с применением фреймворка не имела бы смысла.

 

1.3 Случаи использования PHP фреймворка


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

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

В основном, PHP-фреймворки применяются для разработки проектов сложнее чем 2-х-3-х страничный сайт с текстовыми страницами.

 

1.4 Обзор современных фреймворков


После проведения небольшого анализа и чтения отзывов о фреймворках от большого числа разработчиков разных уровней, с точки зрения удобства разработки, скорости, стабильности, было выделено 6 популярных PHP-фреймворков, которые отвечают большинству требований.

 

1.4.1 Zend Framework

Zend framework - это PHP-framework, созданный и поддерживаемый компанией Zend, сотрудники которой являются непосредственными авторами языка PHP. Поэтому он следует традициям и духу PHP - базируется на простоте, объектно-ориентированных принципах, дружественной лицензии и тщательно тестируемом коде с применением agile методов.

Основные особенности:

1.      Все компоненты полностью ориентированы на PHP 5 и E_STRICT- совместимы;

2.      Встроенный генератор кода;

.        Архитектура «используй только то что необходимо» с минимальными зависимостями компонентов;

.        Использует легко расширяемый шаблон проектирования MVC, поддерживает макеты и PHP-скрипты представления по-умолчанию;

.        Поддерживает множество различных баз данных включая MariaDB, MySQL, Oracle, IBM DB2, Microsoft SQL Server, PostgreSQL, SQLite, and Informix Dynamic Server;

.        Специальные классы для создания, отправки, получения email с помощью mbox, Maildir, POP3 и IMAP4;

.        Гибкая подсистема кэширования с поддержкой множества хранилищ;

Недостатки:

1.      Слишком большой;

2.      Через чур многослойный;

.        Очень медленный без кеширования;

.        Очень сложная архитектура, без глубокого понимания шаблонов проектирования сложен в освоении;

.        Слабое русскоязычное сообщество;

.        Много мелких недочетов;

.        Очень медленная скорость развития;

.        Последняя версия требует PHP 5.2;

.        Нет ORM.

 

1.4.2 CakePHP

CakePHP является быстроразвивающимся фреймворком для PHP, который предоставляет расширяемую архитектуру для разработки, обслуживания и развертки веб-приложений. Использует известный шаблон проектирования MVC, как и в объектно-реляционных фреймворках. Основной парадигмой CakePHP является увеличит продуктивность разработки и помогает программисту писать меньше кода. Изначально создавался как клон популярного Ruby on Rails, и многие идеи были заимствованы именно оттуда.

Особенности:

1.      совместимость с PHP4 (до версии 1.3 включительно) и PHP5;

2.      компоненты для авторизации, ограничения доступа (ACL), управления сессиями, cookies, представления древовидной информации (в виде Nested Sets)

.        хелперы (компоненты) для генерации и заполнения форм, деления на страницы (paginate), управления кэшем, JavaScript (в том числе и AJAX)

.        механизм интернационализации для работы сайта на множестве языков

.        генерация SQL-запросов, в том числе для таблиц с отношениями один ко многим и многие ко многим, ORM

.        Скаффолдинг и генерация CRUD-страниц для сущностей, Router::mapResources c Put Delete Get Post.

.        Автогенератор кода Bake

.        Миграции

.        Консольная интеграция, класс Shell и задачи Task

.        Плагины (как отдельные расширяемые приложения), компоненты и поведения,

.        Поддержка Simple Test

.        Слои (layouts) и темы (Themes)

13.    Низкий порог вхождения - быстрая разработка, основана на соглашениях (взят курс на Ruby On Rails)

Недостатки:

1.      Низкая производительность;

2.      Слабая документация;

.        Неустойчивость к CSRF-атаке;

.        Нет сформированного русскоязычного сообщества;

.        Сложный в понимании ACL;

.        Строгие соглашения по именованию;

.        Низкая скорость развития.

 

1.4.3 Kohana

Проект Kohana был создан как ветвь PHP-фреймворка CodeIgniter под именем Blue Flame. Главной причиной ответвления был переход к более открытой для общественности модели разработки, потому, что многие пользователи были недовольны скоростью разработки и исправления ошибок в CodeIgniter. Rick Ellis - создатель и владелец CodeIgniter - подтолкнул новый фреймворк к созданию собственной документации и посоветовал переименовать проект. В июле 2007 Blue Flame был переименован в Kohana для того, чтобы избежать проблем с авторскими правами в будущем.

Название Kohana было выбрано, когда разработчики начали просматривать словари коренных американцев для того, чтобы выбрать слово, не нарушающее авторские права. Kohana на языке Сиу значит «быстрый». Также в японском языке имеет значение «маленький цветок», а на украинском «любимая» и имя известной косатки (Kohana) - все эти значения не имеют отношения к названию.

Особенности:

1.      Высокая безопасность;

2.      Хорошо прокомментированный код и встроенные средства отладки и профилирования;

.        Прост в понимании;

.        Использует парадигму MVC;

.        Поддержка UTF-8;

.        Очень легко расширяем;

.        Есть ORM;

.        Распространяется по лицензии BSD, то есть полностью свободен как для коммерческого так и бесплатного использования.

Недостатки:

1.      Документация местами устаревшая, редко обновляется;

2.      Слабая обратная совместимость между версиями;

.        Слаборазвитый форум, большинство разработчиков общается через IRC;

.        Нет никаких гарантий, что проект будет развиваться в будущем;

5.      Нет сформированного русскоязычного сообщества

 

1.4.4 Codeigniter

CodeIgniter - популярный MVC фреймворк с открытым исходным кодом, написанный на языке программирования PHP, для разработки полноценных веб-систем и приложений. Разработан компанией EllisLab, а также Риком Эллисом (Rick Ellis) и Полом Бурдиком (Paul Burdick).

Особенности:

1.      CodeIgniter отличает простота, которая достигается благодаря следующим факторам:

2.      Хорошая документация;

.        Развитое сообщество;

.        Программисту не требуется учиться пользоваться генераторами кода из командной строки;

.        CodeIgniter работает практически на любом хостинговом плане, который имеет поддержку PHP версии 5.1 и выше;

.        CodeIgniter считается одним из быстрых и не требовательных к ресурсам фреймворков;

.        Поддержка баз данных MySQL, PostgreSQL, MSSQL, SQLite, Oracle.

Недостатки:

1.      Поддержка PHP4 тянет за собой лишний код;

2.      Нет встроенной ORM;

.        Нет встроенной системы разделения прав;

.        Медленно развивается;

.        Неустойчивость к CSRF-атакам.

 

1.4.5 Symfony

Symfony - PHP фреймворк, имеющий большую библиотеку классов, который написан на PHP 5. Архитектура имеет полезные компоненты и отличные инструменты предназначенные для создания сложных веб-приложений.Symfony - свободный каркас <#"550582.files/image002.gif">

 

2.1.3 Редактор программного кода PhpStorm

JetBrains PhpStorm - коммерческое IDE для PHP разработанное на основе платформы IntelliJ IDEA (рис. 2.2). Предоставляет «умный» редактор для PHP, HTML и JavaScript кода с поддержкой анализа качества кода «на лету» и продвинутыми возможностями автоматического рефакторинга. Дополнение кода полностью поддерживает все возможности PHP 5.3, включая пространство имен и замыкания. Ключевые особенности:

·  Поддержка фреймворка для тестирования PhpUnit;

·        Поддержка отладки PHP и JavaScript кода;

·        Удаленная выгрузка по FTP, SFTP, сетевому диску с автоматической синхронизацией;

·        Поддержка спецификаций HTML5 и EcmaScript 5.

·        Интеграция с системами контроля версий:CVS, SVN, Git, Perforce, Mercurial;

·        Интеграция с баг-треккерами.

 

2.2 Разработка дизайна проекта и верстки


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

Дизайн сайта выполнен в серебристо-пурпурных тонах (рис. 2.3). Серебристый цвет символизировать строгость, стиль, силу. Пурпурный подчеркивает стиль и дополняет его вкусом. Дизайн умеренно консервативен, традиционен и говорит о мужском стиле. Шапка сайта с логотипом и баннером отражает название и выгодное коммерческое предложение.

 

2.3 Проектирование и создание базы данных


Во время проектирования база данных были выделены следующие таблицы:

·  Таблица категорий «Category», которая хранит в себе название категорий на 3-х языках в древовидном виде Adjacency List: titleRu, titleEn, titleRo и parent;

·        Таблица товаров «Price» с названиями и описаниями на 3-х языках, цену, размеры, наличие товара, а так же дату добавления и поле для связи с категорией: titleRu, titleRo, titleEn, descrRu, descrRo, descrEn, idCategory, cost, time, present, sizes;

·        Таблица для хранения пути к фотографиям «Photo» с полем для связи с товаром: idItem, path;

·        Таблица для хранения текстовых страниц «Text» с названиями и описаниями на 3-х языках, а так же красивым адресом для ссылок: titleRu, titleRo, titleEn, descrRu, descrRo, descrEn, name.

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

 

2.4 Cоздание основы приложения и конфигурация


При создании проекта использовался виртуальный хост в denwer, расположенный по пути z:\home\magazin.local\www. Использование виртуального хоста облегчает разработку и тестирование проекта.

Для создания приложения на основе фреймворка yii, необходимо загрузить последнюю версию с официального сайта www.yiiframework.com <#"550582.files/image005.gif">

Созданная основа обладает рядом базовых функций, такими как встроенная авторизация, вывод статических страниц и т.д.

Для удобства переноса на другой web-сервер или хостинг, после создания, каркас приложения был вынесен из папки magazin на один уровень выше, а в index.php и index-test.php исправлен путь к фреймворку.

Файл конфигурации приложения расположен по следующему пути: protected/config/main.php. Файл описывает настройки приложения в виде ассоциативного php-массива. Для настройки подключения к бд был настроен компонент приложения db в секции components:

'db'=>array(

// строка в формате dsn для подключения к БД

                            'connectionString' => 'mysql:host=localhost;dbname=magazin',

                            // имя пользователя

                            'username' => 'root',

'password' => '',

                            'charset' => 'utf8',

                   ),

 

2.5 Генерация каркаса кода с помощью кодогенератора Gii


После того как основа приложения создана и настроена, можно приступить к разработке контроллеров и моделей. Начиная с версии 1.1.2, фреймворк доступен вместе с встроенным генератором кода Gii. Gii позволяет генерировать модели на основе таблиц в базе данных, а так же CRUD-контроллеры для основных действий по управлению записями, такими как добавление записи (Create), просмотр списка записей, просмотр записи (Read), редактирование записи (Update) и удаление (Delete). Для активации Gii в файл конфигурации приложения было добавлено описание подключения модуля gii:

'gii'=>array(

                            'class'=>'system.gii.GiiModule',

// Пароль для входа в кодогенератор

                            'password'=>'generate',

                            // Разрешенные ip-адреса

                            'ipFilters'=>array('127.0.0.1','::1'),

                   ),

После этого, для того чтобы зайти в Gii необходимо перейти по следующей ссылке в браузере: <#"550582.files/image006.gif">

Так как модель используется для управления записями в одной таблице, то были сгенерированы 4 модели: Price, Category, Photo, Text. Для этого использовался раздел Model Generator, в котором в качестве имени таблицы была указана *.

Для генерации CRUD-контроллеров, в Gii есть раздел Crud Generator. Так как таблица Photo является вспомогательной, то для управлению записями в ней не нужен отдельный контроллер, поэтому были сгенерированы 3 контроллера: PriceController, MenuController (для Category), TextController.

 

2.6 Установка верстки и доработка каркаса


Представление в фреймворке yii - это специальный php-скрипт, состоящий из простых выражений, отвечающий за отображение элементов пользовательского интерфейса. У каждого представления есть имя, которое используется для поиска скрипта представления. Если имя представления test, то имя скрипта представления test.php.

Для отображения представления используется метод CController::render, которому передается имя представления и массив значений, который преобразуется в локальные переменные внутри представления. Например, если внутри действия update контроллера ItemController вызывается:

$this->render('update',array(

'model'=>$model,

'language'=>Yii::app()->language,

));

то, скрипт представления будет расположен по следующему пути: protected/views/item/update.php, а внутри него будут доступны две локальные переменные: $model и $language.

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

Так же, при обработке скрипта представления неявно используется специальное представление - макет, который декорирует пользовательский интерфейс и может содержать такие элементы как шапка сайта и подвал. Внутри макета доступна локальная переменная $content, в которой хранится вывод скрипта представления. Макет, по-умолчанию, расположен по следующему пути: protected/views/layouts/main.php.

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

Помимо виджетов, в фреймворке присутствует класс CHtml, статические методы которого позволяют выводить ссылки на основе заданных маршрутов(route), формы и её элементов ввода и т. д. Наиболее часто используемый метод это Chtml::link(<заголовок>,<маршрут в виде массива или строки>), который позволяет вывести ссылку на основе правил маршрутизации.

Все действия по установке верстки и доработке каркасы можно разделить на следующие пункты:

1.      настройка макета;

2.      настройка представлений видимых для посетителей;

.        доработка правил валидации моделей и провайдеров данных;

.        настройка представлений администратора;

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

 

2.6.1 Настройка макета

Установка верстки была начата с макета. Основные элементы, которые присутствуют в макете это шапка сайта, включая меню, меню категорий справа и подвал.

<?php $this->widget('zii.widgets.CMenu',array(

// Список пунктов

'items'=>array(('label'=>Yii::t('menu','Home'), 'url'=>array('/price/index')),('label'=>Yii::t('menu','New'), 'url'=>array('/price/new')),('label'=>Yii::t('menu','Help'), 'url'=>array('text/index','page'=>'help')),('label'=>Yii::t('menu','Price'), 'url'=>array('/price/get')),('label'=>Yii::t('menu','Contact'), 'url'=>array('/text/index','page'=>'contact')),('label'=>Yii::t('menu','Logout'), 'url'=>array('/admin/logout'),'visible'=>!Yii::app()->user->isGuest),

),

)); ?>

где label - название пункта меню, url - маршрут(route) к контроллеру и действию, а visible - статус видимости пункта. Для отображения меню категорий товаров использовался виджет CTreeView, настройка которого полностью аналогична, за исключением формирования списка вложенных категорий, который был вынесен в отдельный виджет-адаптер - LeftMenu, который изначально разрабатывался для вывода меню слева, но в связи с неудобством интерфейса вынесен в правую часть.

Так же, для отображения заголовка страницы использовалось св-во контроллера $this->pageTitle.

 

2.6.2 Настройка представлений видимых для посетителей

Для отображения главной страницы с товарами, а так же страницы новинок использовался виджет zii.widgets.CListView:

<?php $this->widget('zii.widgets.CListView',array(

'dataProvider'=>$dataProvider,

'itemView'=>'_item',

'template'=>'{sorter}{items}{pager}',

'sortableAttributes'=>array(

'title'.ucfirst(Yii::app()->language),

'time',

'cost'

),

'pagerCssClass'=>'pager clear',

));?>

где dataProvider - провайдер данных, itemView - специальный файл представления отображающий одну модель в виде локальной переменной $data, template - шаблон вывода, sortableAttributes отвечают за сортировку данных по полям, а pagerCssClass использовался для настройки положения переключателя страниц. Провайдер данных - специальный компонент-адаптер, который отвечает за выборку моделей (записей) по определенному условию, их сортировку, а также за разбиение по страницам, будет рассмотрен позже в работе. Js-скрипт HighSlide был подключен в соответствии с описанием на оф. странице.

Отображение прайс-листа и остальных страниц было выполнено без применения виджетов в виде стандартного php-кода.

 

2.6.3 Доработка правил валидации моделей и провайдеров данных

Так как модель отвечает за выборку и валидацию (проверку) данных, то в ней описываются условия выборки и проверки данных.

Правила валидации описываются в методе rules модели. Этот метод должен вернуть массив с описанием правил валидации, например:

public function rules()

{array(('titleRu,titleEn,titleRo','length','max'=>255,'min'=>4),('titleRu,titleEn,titleRo','required'),('parent', 'numerical', 'integerOnly'=>true,'allowEmpty'=>false),

);

}

Формат описания правила выглядит следующим образом:

array(<имя св-ва/св-в модели (полей в таблице)>,<псевдоним валидатора>,<имя доп. параметра валидатора 1>=><значение параметра 1>, …)

Каждое имя валидатора является псевдонимом класса. Это позволяет создавать и использовать свои классы валидации. Основные валидаторы:

1.      default (CDefaultValueValidator) - присваивает значение по умолчанию выбранным атрибутам;

2.      in (CRangeValidator) - проверяет, содержится ли значение атрибута в указанном наборе значений;

.        length (CStringValidator) - проверяет, находится ли длина строкового значения атрибута в в указанном интервале;

.        numerical (CNumberValidator) - проверяет, является ли значение атрибута числом;

.        required (CRequiredValidator) - проверяет, не является ли значение атрибута пустым;

6.      match: псевдоним класса CRegularExpressionValidator, проверяющего значение атрибута на соответствие регулярному выражению;

7.      unique: псевдоним класса CUniqueValidator, который проверяет, является ли значение атрибута уникальными в пределах столбца таблицы базы данных;

Дополнительные параметры каждого из валидаторов подробно описаны в руководстве по yii.

После того как правила валидации были настроены, в модель были добавлены статические методы для выборки списка товаров. Каждой такой метод использует провайдер данных и выглядит примерно так:

public static function searchByCategory($category,$pageSize)

{

// создание условия выборки

$criteria=new CDbCriteria();

$criteria->select='Id, title'.ucfirst(Yii::app()->language).' as title,cost';

$criteria->addInCondition('idCategory',Category::getAllChildren($category));

// создание провайдера данныхnew CActiveDataProvider(__CLASS__,array(

// условие выборки

'criteria'=>$criteria,

// настройка постраничного вывода

'pagination'=>array(

'pageSize'=>$pageSize

),

// поддержка сортировки

'sort'=>array(

'defaultOrder'=>'title'.ucfirst(Yii::app()->language),

'attributes'=>array(

'title'.ucfirst(Yii::app()->language),

'time',

'cost'

)

)

));

}

Как видно из приведенного выше кода провайдер данных является экземпляром класса CActiveDataProvider (а так же потомком CDataProvider) и очень гибок в настройке.

 

2.6.4 Настройка представлений администратора

Для вывода ссылок для администраторских действий необходимо проверка является ли пользователь администратором. Так как администратор всего один в системе и разделение прав не используется, то достаточно лишь проверки на авторизованность пользователя: if(Yii::app()->user->isGuest).

После того как были выведены все ссылки, были доработаны представления форм с учетом специфики моделей и правил валидации. Для этого использовались статические методы CHtml, ответственные за вывод полей ввода формы. Наиболее часто используемые методы CHtml для форм:

1.      CHtml::activeLabelEx(<модель>,<имя св-ва>) - выводит заголовок поля ввода, где заголовок берется из метода attributeLabels модели, а так же помечает его красной *, если оно обязательное(имеет валидатор required).

2.      CHtml::activeTextField(<модель>,<имя св-ва>) - выводит текстовое поле ввода.

.        CHtml::activeTextArea(<модель>,<имя св-ва>) - выводит textarea-поле ввода.

4.      CHtml::submitButton(<имя кнопки>) - выводит кнопку для отправки формы на сервер.

 

.7 Настройка кэширования, многоязычности и «красивых» ссылок


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

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

Для настройки кэширования в контроллерах использовался компонент COutputCache, описанный в методе filters контроллера:

array(

// Компонент отключен для администраторских действий

'COutputCache -create, update, upload',

// Срок годности

'duration'=>24*3600*365,

// зависимости

'dependency'=>array(

'class'=>'CChainedCacheDependency',

'dependencies'=>array(

// по глобальному изменению pm_time

new CGlobalStateCacheDependency('pm_time'),

// по глобальному изменению cu_time CGlobalStateCacheDependency('cu_time'),

),

),

// данные в кэше отличаются по категории, сортировке, страницам, языку

'varyByParam'=>array('category','sort','page','lang'),

// и по статусу авторизованности пользователя

'varyByExpression'=>'Yii::app()->user->isGuest',

// кэш используется только для GET-запросов

'requestTypes'=>array('GET'),

),

где cu_time - последнее время обновления категорий, а pu_time - товаров и меняются по событию сохранения модели.

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

Каждое сообщение перевода относится к какой-либо категории. Сообщения переводов хранятся по следующему пути: protected/messages/<код языка>/<имя категории>.php. Файлы переводы содержат в себе ассоциативный массив, где ключем является фраза на исходном (английский) языке, а значение - переведенное для данного кода (русский, например).

Для перевода сообщения, фреймфорк yii предоставляет статический метод Yii::t(<имя категории>,<сообщение>), а для хранения текущего языка в ссылке в файл конфигурации было подключено стороннее расширение в качестве компонента приложения urlManager: LangUrlManager.

Для активации «красивых», человекопонятных ссылок компонент приложения urlManager был настроен следующим образом:

'urlManager'=>array(

'class'=>'application.extensions.urlManager.CLangUrlManager',

//формировать ссылку в формате /route/p1/v1/p2/v2/...

'urlFormat'=>'path',

'rules'=>array(

// код языка всегда расположен впереди ссылки

'<lang:(en|ru|ro)>'=>'/price',

'<lang:(en|ru|ro)>/<_c>'=>'<_c>',

'<lang:(en|ru|ro)>/<_c>/<_a>'=>'<_c>/<_a>',

'<lang:(en|ru|ro)>/text/index/<page:.*>'=>'text/index',

),

// не выводить index.php в ссылке

'showScriptName'=>false,

),

а в корневой папке сайта (www) был добавлен файл .htaccess с активацией и настройкой mod_rewrite в web-сервере apache:

Options +FollowSymLinks*/*on%{REQUEST_FILENAME} !-f%{REQUEST_FILENAME} !-d. index.php

ЗАКЛЮЧЕНИЕ


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

Вот небольшой список который стоит выделить:

1.      Отличная поддержка. Для русскоязычных пользователей на официальном форуме фреймворка создан собственный раздел где вы всегда можете получить ответы на свои вопросы. Плюс к этому мною было созданно русскоязычное сообщество <http://groups.google.com/group/yii-framework/> которое постоянно пополняется новыми материалами.

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

.        Полная поддержка ООП. Фреймворк полностью заточен под пятую версию php что позволяет поддерживать весь функционал при обьектно ориентированном программировании. Разработчики не пошли на поддержку php4 в ущерб гибкости и удобства ооп. В связи с этим фреймворк не будет работать на php4, но зато отлично покажет себя на php5! Если вы знаете что такое ООП и умеете его использовать в php - тогда Yii лучший выбор для вас.

.        Генератор кода. Yii предоставляет отличный встроенный генератор исходного кода. Указав лишь основные параметры - Yii генерирует для вас общую структуру приложения которая будет содержать все необходимые модели/контроллеры/отображения для старта. В yii версии 1.1 обещают браузерный генератор кода с еще большим функционалом!

.        Темы. Благодаря встроенной поддержке тем вы можете изменять дизайн вашего приложения в пару нажатий клавиш.

.        Защита. Все стандартные классы Yii заточены под высокий уровень безопасности что при умелом обращении позволяет полностью обезопасить свой сайт от Sql-Inj, XSS, CSRF и других атак.

Если честно то перечислять можно долго, и пятнадцатью пунктами список естественно не ограничится. Много из того что написанно выше - и стало для меня стимулом перейти на Yii Framework.

БИБЛИОГРАФИЯ


1. Джордж Шлосснейгл.Профессиональное программирование на PHP,2006.

2. Максим Кузнецов, Игорь Симдянов, Сергей Голышев.PHP 5 на примерах. БХВ-Петербург.2005, ISBN: 5-94157-670-6

3. А.Кухарчик. PHP: обучение на примерах. 240 стр., 2004 г. Издательство: Новое знание. ISBN 985-475-050-7

4. Леон Аткинсон, Зеев Сураски. PHP 5. Библиотека профессионала,2006

5. Джон Коггзолл. PHP 5. Полное руководство,2006.

6. Антон Орлов. PHP: Полезные приемы,2005.

7. Александр Мазуркевич, Дмитрий Еловой. PHP: настольная книга программиста.

<http://yiiframework.com/> - официальный сайт Yii Framework .

<http://yiiframework.ru/> - русскоязычное сообщество Yii .

1. BURAGA, SABIN. Proiectarea siturilor Web. Design şi funcţionalitate (ediţia a II-a). Bucureşti: Ed. Teora, 2005. 344 стp.

Verificarea starii si a parametrilor de functionare MySQL <http://www.lamp.ro/articole-tutoriale-optimizare-mysql/verificarea-starii-si-a-parametrilor-de-functionare-mysql/> [citat 15.11.2011]. Disponibil pe internet: <http://www.lamp.ro/articole-tutoriale-optimizare-mysql/verificarea-starii-si-a-parametrilor-de-functionare-mysql/>

1. СУЭРИНГ С, КОНВЕРС Т, ПАРК Д. PHP и MySQL. Библия программиста. Диалектика, 2010. 912 стр.

2. ОЛИЩУК А.В., ЧАПЛЫГИН А.Н. Разработка WEB приложений на РНР 5. Профессиональная работа: Вильяме. 2006. 352стр.

Похожие работы на - Использование PHP фреймворков в разработке сайта

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!