Лекция
Game: Perform tasks and rest cool.1 people play!
Play gameПривет, Вы узнаете о том , что такое yii framework, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое yii framework , настоятельно рекомендую прочитать все из категории Фреймворки. Famworks ( программная платформа).
Yii Framework представляет собой один из лучших PHP-фреймворков, предназначенных для разработки больших веб-приложений. В цикле «Yii Framework для чайников» мы научимся разворачивать yii-приложение на сервере, узнаем как работать с фреймворком и познакомимся с основными возможностями, которые он предоставляет. Все это я постараюсь рассказать максимально просто и наглядно.
Превосходство Yii над другими фреймворками заключается в эффективности, широких возможностях и качественной документации. Yii изначально спроектирован очень тщательно для соответствия всем требованиям при разработке серьезных веб-приложений. Yii не является ни
побочным продуктом какого-либо проекта, ни сборкой сторонних решений.
К преимуществам данного фреймворка можно отнести:
Существует пара недостатков использования фреймворка, которые следует отметить.
Во-первых, весь код, который включает в себя фреймворк, создает
нагрузку на сервер, что может стать проблемой при создании больших
проектов. Выходом из данной ситуации является кэширование, которое
позволяет снизить последствия перегрузки, и для корпоративных
приложений, имеется возможность использовать нативный SQL, для
минимизации время выполнения запроса.
Во-вторых, фреймворк Yii является все еще молодым.
Если вы уже знакомы с другими фреймворками, вам наверняка будет интересно сравнить их с Yii.
Game: Perform tasks and rest cool.1 people play!
Play gameYii — не проект одного человека. Он поддерживается и развивается сильной командой и большим сообществом разработчиков, которые ей помогают. Авторы фреймворка следят за тенденциями веб-разработки и развитием других проектов. Наиболее подходящие возможности и лучшие практики регулярно внедряются в фреймворк в виде простых и элегантных интерфейсов.
Структура приложения на фреймворке Yii 2 представлена на рис. 1.3
Game: Perform tasks and rest cool.1 people play!
Play game
Для того, чтобы использовать Yii Framework необходимы:
Скачанный архив содержит следующие элементы:
Будем считать, что мы работаем в операционной системе семейства UNIX и путь до нашего сайта:
/srv/www/site.com/
Чтобы файлы фреймворка не были доступны из браузера, поместим папку framework в каталог
/srv/www/
Для того, чтобы развернуть yii-приложение воспользуемся командной строкой. Из корня выполним следующие команды в терминале:
cd /srv/www/site.com/framework/
php -f yiic web
app /srv/www/site.comПри этом в папке сайта будет развернуто демонстрационное yii-приложение и выставлены требуемые права на папки и файлы.
Рассмотрим папки, находящиеся в каталоге /srv/www/site.com/
Рассмотрим папки в каталоге /srv/www/yoursite.com/protected/
Game: Perform tasks and rest cool.1 people play!
Play gameGame: Perform tasks and rest cool.1 people play!
Play game
Любые взаимодействия с пользователем в yii-приложении происходят через bootstrap-файл index.php
$yii=dirname(__FILE__).'/../../framework/yii.php'; //Определяем расположение фреймворка $config=dirname(__FILE__).'/protected/config/main.php'; //Определяем местоположение файла конфигурации defined('YII_DEBUG') or define('YII_DEBUG',true); //Режим отладки defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3); //Определение количества уровней в стеке вызовов, которые будут отображаться в логах. Об этом говорит сайт https://intellect.icu . Стек вызовов - это история подключения файлов и функций require_once($yii); Yii::createWebApplication($config)->run(); //Запускаем приложение
Большинство настроек находятся в файле /config/main.php. Файл конфигурации возвращает многомерный ассоциативный массив настроек, некоторые из которых по умолчанию предопределены.
return array ( 'name'=>'Мой первый сайт на Yii Framework!', // Название приложения 'defaultController' => 'site', // Контроллер, загружаемый по умолчанию 'modules'=>array( 'gii'=>array( // Модуль генерации кода, который можно использовать 'class'=>'system.gii.GiiModule', 'password'=>'YourPassword', 'ipFilters'=>array(), ), ), 'components'=>array( 'urlManager'=>array( // Компонент, изменяющий URL-адреса 'urlFormat'=>'path', 'rules'=>array( '/'=>'/view', '//'=>'/', '/'=>'/', ), ), 'db'=>array( // Параметры доступа к MySQL базе данных 'connectionString' => 'mysql:host=localhost;dbname=mydatabase', 'emulatePrepare' => true, 'username' => 'root', 'password' => 'mypassword', 'charset' => 'utf8', ), ), 'params'=>array( // Параметры. Можно вызывать как Yii::app()->params['Имя параметра'] 'adminEmail'=>'my@email.com', ), );
В качестве примера мы будем работать с базой данных, содержащей некоторое подобие комментариев и пользователей. Наглядно ее можно представить следующим образом:
SQL-запросы для создания соответствующих таблиц:
CREATE TABLE Users ( id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, username VARCHAR(20) NOT NULL, email VARCHAR(60) NOT NULL, karma SMALLINT NULL, raiting SMALLINT NULL, registerDate DATETIME NULL ) CREATE TABLE Comments ( id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, user MEDINT UNSIGNED NOT NULL, raiting SMALLINT NULL, date DATETIME NULL )Jungle Cars Trip Multiplayer - Invite your friends!
Game: Perform tasks and rest cool.1 people play!
Play game
Game: Perform tasks and rest cool.1 people play!
Play game
Если Composer еще не установлен это можно сделать по инструкции на getcomposer.org, или одним из нижеперечисленных способов. На Linux или Mac используйте следующую команду:
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
На Windows, скачайте и запустите Composer-Setup.exe.
В случае возникновения проблем читайте раздел "Troubleshooting" в документации Composer. Если вы только начинаете использовать Composer, рекомендуем прочитать как минимум раздел "Basic usage".
В данном руководстве предполагается, что Composer установлен глобально. То есть он доступен через команду composer. Если вы используете composer.phar из локальной директории, изменяйте команды соответственно.
Если у вас уже установлен Composer, обновите его при помощи composer self-update.
Note: Во время установки Yii Composer запрашивает довольно большое количество информации через Github API. Количество запросов варьируется в зависимости от количества зависимостей вашего проекта и может превысить ограничения Github API. Если это произошло, Composer спросит логин и пароль от Github. Это необходимо для получения токена для Github API. На быстрых соединениях это может прозойти еще до того, как Composer сможет обработать ошибку, поэтому мы рекомендум настроить токен доступа до установки Yii. Инструкции приведены в документации Composer о токенах Github API.
После установки Composer устанавливать Yii можно запустив следующую команду в папке доступной через веб:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
Эта команда устанавливает последнюю стабильную версию Yii в директорию basic. Если хотите, можете выбрать другое имя директории.
Info: Если команда composer create-project не выполняется нормально, попробуйте обратиться к разделу "Troubleshooting" документации Composer. Там описаны другие типичные ошибки. После того, как вы исправили ошибку, запустите composer update в директории basic.
Tip: Если вы хотите установить последнюю нестабильную ревизию Yii, можете использовать следующую команду, в которой присутствует опция stability:
composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basicСтарайтесь не использовать нестабильную версию Yii на рабочих серверах потому как она может внезапно поломать код.
Установка Yii из архива состоит из трех шагов:
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 'cookieValidationKey' => 'enter your secret key here',
Game: Perform tasks and rest cool.1 people play!
Play gamehttp://localhost/basic/web/index.php
Здесь подразумевается, что вы установили приложение в директорию basic в корневой директории вашего веб сервера сервер работает локально (localhost). Вам может потребоваться предварительно его настроить.
PHP должен быть установлен как FPM SAPI для Nginx. Используйте следующие параметры Nginx и не забудьте заменить path/to/basic/web на корректный путь к basic/web и mysite.test на ваше имя хоста.
server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## слушаем ipv6 server_name mysite.test; root /path/to/basic/web; index index.php; access_log /path/to/project/log/access.log; error_log /path/to/project/log/error.log; location / { # Перенаправляем все запросы к несуществующим директориям и файлам на index.php try_files $uri $uri/ /index.php?$args; } # раскомментируйте строки ниже во избежание обработки Yii обращений к несуществующим статическим файлам #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; location ~ \.php$ { include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; } location ~ /\.(ht|svn|git) { deny all; } }
Используя данную конфигурацию установите cgi.fix_pathinfo=0 в php.ini чтобы предотвратить лишние системные вызовы stat().
Учтите, что используя HTTPS необходимо задавать fastcgi_param HTTPS on; чтобы Yii мог корректно определять защищенное соединение.
Для нашей задачи потребуется действие say, которое читает параметр message из запроса и отображает его значение пользователю. Если в запросе не содержится параметра message, то действие будет выводить «Привет».
Info: Действия могут быть запущены непосредственно пользователем и сгруппированы в контроллеры. Результатом выполнения действия является ответ, который получает пользователь.
Действия объявляются в контроллерах. Для простоты, вы можете объявить действие say в уже существующем контроллере SiteController, который определен в файле класса controllers/SiteController.php:
render('say', ['message' => $message]); } }Jungle Cars Trip Multiplayer - Invite your friends!
Game: Perform tasks and rest cool.1 people play!
Play game
В приведенном коде действие say объявлено как метод actionSay в классе SiteController. Yii использует префикс action чтобы различать методы-действия и обычные методы. Название после префикса action считается идентификатором соответствующего действия.
Info: Идентификаторы действий задаются в нижнем регистре. Если идентификатор состоит из нескольких слов, они соединяются дефисами, то есть create-comment. Имена методов действий получаются путем удаления дефисов из идентификатора, преобразования первой буквы каждого слова в верхний регистр и добавления префикса action. Например, идентификатор действия create-comment соответствует методу actionCreateComment.
Метод действия принимает параметр $message, который по умолчанию равен "Привет". Когда приложение получает запрос и определяет, что действие say ответственно за его обработку, параметр заполняется одноименным значением из запроса.
Внутри метода действия, для вывода отображения представления с именем say, используется метод render(). Для того, чтобы вывести сообщение, в отображение передается параметр message. Результат отображения при помощи return передается приложению, которое отдает его пользователю.
Представления являются скриптами, которые используются для формирования тела ответа. Для нашего приложения вы создадите представление say, которое будет выводить параметр message, полученный из метода действия:
Представление say должно быть сохранено в файле views/site/say.php. Когда метод render() вызывается в действии, он будет искать PHP файл с именем вида views/ControllerID/ViewName.php.
Стоит отметить, что в коде выше параметр message экранируется для HTML перед выводом. Это обязательно так как параметр приходит от пользователя, который может попытаться провести XSS атаку путем вставки зловредного JavaScript кода.
Вы можете дополнить представление say HTML тегами, текстом или кодом PHP. Фактически, представление say является простым PHP скриптом, который выполняется методом render(). Содержимое, выводимое скриптом представления, будет передано пользователю приложением.
Рис. 1.4. Схема обработки запроса
Каждому шагу соответствует определенное действие:
1. Пользователь делает запрос к входному скрипту web / index.php.
2. Скрипт загружает конфигурацию приложения и создает экземпляр
приложения для обработки запроса.
3. Приложение разрешает запрошенный маршрут с помощью
компонента приложения-запроса.
4. Приложение создает экземпляр контроллера для обработки запроса.
5. Контроллер создает экземпляр действия и выполняет фильтры для
действия.
6. Если какой-либо фильтр не работает, действие отменяется.
7. Если все фильтры проходят, действие выполняется.
8. Действие загружает модель данных, возможно из базы данных.
9. Действие отображает представление, предоставляя ему модель
данных.
10. Отрендеренный результат возвращается компоненту приложения
ответа.
11. Компонент ответа отправляет обработанный результат в браузер
пользователя.
Game: Perform tasks and rest cool.1 people play!
Play gameПосле создания действия и представления вы можете перейти на новую страницу по следующему URL:
http://hostname/index.php?r=site%2Fsay&message=Привет+мир
Будет отображена страница с надписью «Привет мир». Она использует ту же шапку и футер, что и остальные страницы приложения. Если вы не укажете параметр message, то увидите на странице «Привет». Это происходит потому, как message передается в метод actionSay() и значение по умолчанию — «Привет».
Info: Новая страница использует ту же шапку и футер, что и другие страницы, потому что метод render() автоматически вставляет результат представления say в, так называемый, макет views/layouts/main.php.
Параметр r в нашем URL требует дополнительных пояснений. Он связан с маршрутом (route), который представляет собой уникальный идентификатор, указывающий на действие. Его формат ControllerID/ActionID. Когда приложение получает запрос, оно проверяет параметр r и, используя ControllerID, определяет какой контроллер следует использовать для обработки запроса. Затем, контроллер использует часть ActionID, чтобы определить какое действие выполняет реальную работу. В нашем случае маршрут site/say будет соответствовать контроллеру SiteController и его действию say. В результате, для обработки запроса будет вызван метод SiteController::actionSay().
Info: Как и действия, контроллеры также имеют идентификаторы, которые однозначно определяют их в приложении. Идентификаторы контроллеров используют те же правила именования, что и идентификаторы действий. Имена классов контроллеров получаются путем удаления дефисов из идентификатора, преобразования первой буквы каждого слова в верхний регистр и добавления в конец Controller. Например, идентификатор контроллера post-comment соответствует имени класса контроллера PostCommentController.
В заключение, эта статья об yii framework подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое yii framework и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Фреймворки. Famworks ( программная платформа)
Комментарии
Оставить комментарий
Фреймворки. Famworks ( программная платформа)
Термины: Фреймворки. Famworks ( программная платформа)