Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Основы Yii Framework

Лекция



Привет, Вы узнаете о том , что такое yii framework, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое yii framework , настоятельно рекомендую прочитать все из категории Фреймворки. Famworks ( программная платформа).


Основы Yii Framework

Yii Framework представляет собой один из лучших PHP-фреймворков, предназначенных для разработки больших веб-приложений. В цикле «Yii Framework для чайников» мы научимся разворачивать yii-приложение на сервере, узнаем как работать с фреймворком и познакомимся с основными возможностями, которые он предоставляет. Все это я постараюсь рассказать максимально просто и наглядно.

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

  • - использование стандартных способов решения задач, что в свою очередь уменьшает (устраняет) запутанность кода;
  • - сокращение времени, затрачиваемое на рутинные задачи, такие как проверка форм и безопасность;
  • - облегчение командной работы с помощью соблюдения стандартов;
  • - облегчение поддержки кода с использованием общей архитектуры и методов;
  • - лицензию BSD;
  • - интеграцию с современной java-script библиотекой jQuery которая поможет с легкостью создавать ajax элементы на страницах сайтов;
  • - стандартные классы Yii заточены под высокий уровень безопасности что позволяет полностью обезопасить свой сайт от Sql-Inj, XSS, CSRF и других атак;
  • - активное сообщество разработчиков, которые поддерживают фреймворк, обобщенные задачи, а также новые.


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

Сравнение Yii с другими фреймворками

Если вы уже знакомы с другими фреймворками, вам наверняка будет интересно сравнить их с Yii.

  • Как и многие другие PHP фреймворки, для организации кода Yii использует архитектурный паттерн MVC (Model-View-Controller).
  • Yii придерживается философии простого и элегантного кода, не пытаясь усложнять дизайн только ради следования каким-либо шаблонам проектирования.
  • Yii является full-stack фреймворком и включает в себя проверенные и хорошо зарекомендовавшие себя возможности, такие как ActiveRecord для реляционных и NoSQL баз данных, поддержку REST API, многоуровневое кэширование и другие.
  • Yii отлично расширяем. Вы можете настроить или заменить практически любую часть основного кода. Используя архитектуру расширений, легко делиться кодом или использовать код сообщества.
  • Одна из главных целей Yii – производительность.

Yii — не проект одного человека. Он поддерживается и развивается сильной командой и большим сообществом разработчиков, которые ей помогают. Авторы фреймворка следят за тенденциями веб-разработки и развитием других проектов. Наиболее подходящие возможности и лучшие практики регулярно внедряются в фреймворк в виде простых и элегантных интерфейсов.

Основы Yii Framework

Структура приложения на фреймворке Yii 2 представлена на рис. 1.3

Развертка Yii-приложения


Для того, чтобы использовать Yii Framework необходимы:

  1. Веб-сервер с предустановленным PHP версии 8 и выше.
  2. Базовые знания PHP, объектно-ориентированного программирования и паттерна MVC.
  3. Архив с самим фреймворком. Можно скачать с официального сайта.


Скачанный архив содержит следующие элементы:

  1. Текстовые файлы CHANGELOG, LICENSE, README, и UPGRADE, содержание которых очевидно из названий.
  2. Папку demos, содержащую четыре демо-проекта (блог, телефонную книгу, игру «Виселица» и простой «Hello, world!»).
  3. Папку framework с самим фреймворком.
  4. Папку requirements с тестами совместимости фреймворка и хостинга.


Будем считать, что мы работаем в операционной системе семейства 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-приложение и выставлены требуемые права на папки и файлы.

Структура Yii-приложения


Рассмотрим папки, находящиеся в каталоге /srv/www/site.com/

  1. assests — файлы, которые генерирует фреймворк в процессе работы.
  2. css — стили.
  3. images — изображения.
  4. protected — основная папка приложения. Ее рассмотрим подробнее.
  5. themes — тема фреймворка


Рассмотрим папки в каталоге /srv/www/yoursite.com/protected/

  1. commands — приложения для управления фреймворком через консоль.
  2. components — различные компоненты.
  3. config — конфигурационные файлы.
  4. controllers — контроллеры (MVC).
  5. data — SQLite база данных.
  6. etensions — расширения для фреймворка.
  7. messages — мультиязычность.
  8. migrations — миграции.
  9. models — модели (MVC).
  10. runtime — временные файлы, создаваемые фреймворком.
  11. tests — тесты.
  12. views — представления (MVC).

Настройка Yii-приложения


Любые взаимодействия с пользователем в 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',
),
);

Создание БД для будущего приложения


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

Основы Yii Framework

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
)

Установка при помощи Composer

Установка Composer

Если 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 можно запустив следующую команду в папке доступной через веб:

Установка 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 из архива состоит из трех шагов:

  1. Скачайте архив с yiiframework.com;
  2. Распакуйте скачанный архив в папку, доступную из Web.
  3. В файле config/web.php добавьте секретный ключ в значение cookieValidationKey (при установке через Composer это происходит автоматически):
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => 'enter your secret key here',

Проверка установки

После установки приложение будет доступно по следующему URL:

http://localhost/basic/web/index.php

Здесь подразумевается, что вы установили приложение в директорию basic в корневой директории вашего веб сервера сервер работает локально (localhost). Вам может потребоваться предварительно его настроить.

Основы Yii Framework

Рекомендуемые настройки Nginx

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]);
    }
}

В приведенном коде действие 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(). Содержимое, выводимое скриптом представления, будет передано пользователю приложением.

Жизненный цикл приложения в Юи

Основы Yii Framework

Рис. 1.4. Схема обработки запроса

Каждому шагу соответствует определенное действие:
1. Пользователь делает запрос к входному скрипту web / index.php.
2. Скрипт загружает конфигурацию приложения и создает экземпляр
приложения для обработки запроса.
3. Приложение разрешает запрошенный маршрут с помощью
компонента приложения-запроса.
4. Приложение создает экземпляр контроллера для обработки запроса.
5. Контроллер создает экземпляр действия и выполняет фильтры для
действия.
6. Если какой-либо фильтр не работает, действие отменяется.
7. Если все фильтры проходят, действие выполняется.
8. Действие загружает модель данных, возможно из базы данных.
9. Действие отображает представление, предоставляя ему модель
данных.
10. Отрендеренный результат возвращается компоненту приложения
ответа.
11. Компонент ответа отправляет обработанный результат в браузер
пользователя.

Попробуем

После создания действия и представления вы можете перейти на новую страницу по следующему URL:

http://hostname/index.php?r=site%2Fsay&message=Привет+мир

Основы Yii Framework

Будет отображена страница с надписью «Привет мир». Она использует ту же шапку и футер, что и остальные страницы приложения. Если вы не укажете параметр 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.

Вау!! 😲 Ты еще не читал? Это зря!

  • Laravel
  • Symfony
  • framework

В заключение, эта статья об yii framework подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое yii framework и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Фреймворки. Famworks ( программная платформа)

создано: 2016-02-11
обновлено: 2021-11-12
132506



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


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

Фреймворки. Famworks ( программная платформа)

Термины: Фреймворки. Famworks ( программная платформа)