Yii lee ндс 3as

Опубликовано: 04.05.2024

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

Final product image
Final product image
Final product image
What You'll Be Creating

Если вы вдруг спрашиваете: «Что такое Yii?» то ознакомьтесь сперва с моим предыдущим учебным пособием «Введение в Yii Framework», в котором рассматриваются преимущества Yii и которое включает в себя обзор нового в Yii 2.0, выпущенного в октябре 2014 года.

В этой серии статей, посвященной программированию с Yii2 я помогаю читателям в использование Yii2 Framework для PHP. В сегодняшнем учебном пособии я расскажу вам об основах просмотра, загрузки и скачиваня файлов в облачный сервис хранения данных S3 от Amazon. По сути, я создал простую модель хранения и контроллер в качестве примера, который вы можете расширить для своих нужд.

Напомню, что я участвую в комментариях под статьей. Меня особенно интересует, если у вас разные подходы, дополнительные идеи или вы хотите предложить темы для будущих статей. Если у вас есть вопрос или предложение темы, пожалуйста, напишите ниже. Вы также можете связаться со мной напрямую в Twitter @reifman .

Что такое Amazon S3?


Amazon S3 представляет собой простое в использовании облачное хранилище для объектов и файлов. Оно обеспечивает 99,99% доступность и 99,999999999% долговечность объектов.

Сервис предлагает множество функций для простого или расширенного использования. Он обычно используется в качестве компонента хранения для службы CDN Amazon CloudFront, но они отличаются и могут использоваться независимо друг от друга.

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

Как и большинство AWS, вы управляете S3 через API, и сегодня я собираюсь провести вас через просмотр, загрузку и скачивание файлов с S3 с помощью Yii.

Начинаем

Чтобы запустить демонстрационный код, вам понадобится ваша собственная учетная запись Amazon AWS и ключи доступа. Вы можете просмотреть дерево S3 из консоли AWS, показанной ниже:

Yii AWS S3 - AWS Console Menu
Yii AWS S3 - AWS Console Menu
Yii AWS S3 - AWS Console Menu

S3 состоит из бакетов, в которых хранятся многочисленные каталоги и файлы. Поскольку я использовал AWS в качестве CDN, мое дерево WordPress остается в моем старом бакете. Вы также можете просмотреть свой бакет:

Yii AWS S3 - Buckets
Yii AWS S3 - Buckets
Yii AWS S3 - Buckets

Когда я обхожу дерево объектов, вот более глубокий взгляд на содержимое моего бакета:

Yii AWS S3 - Objects Folders and Files
Yii AWS S3 - Objects Folders and Files
Yii AWS S3 - Objects Folders and Files

Программирование с S3

Опять же, я опишу приветственное дерево от GitHub для нашего демонстрационного кода (см. ссылку на этой странице.) Это из Yii2 basic.

Получение ключей доступа

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

Yii AWS S3 - Security Credentials and Access Keys
Yii AWS S3 - Security Credentials and Access Keys
Yii AWS S3 - Security Credentials and Access Keys

Для нашей демонстрации вам нужно поместить их в свой файл hello.ini вместе с другими защищенными ключами и кодами доступа:

Установка расширения Yii для AWS

Для этого урока мы будем использовать расширение AWS Federico Motta для Yii2. Он определенно самый молодой программист Yii, код которого я использовал для учебника Envato Tuts +:

Yii AWS S3 - AWS SDK Extension for Yii2 on Github
Yii AWS S3 - AWS SDK Extension for Yii2 on Github
Yii AWS S3 - AWS SDK Extension for Yii2 on Github

Разве это не удивительно, как быстро дети усваиваются программирование в наши дни?

Вот процесс установки с использованием Composer:

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

Я также зарегистрировал компонент awssdk в hello/config/web.php:

Просмотр моих каталогов S3

Для сегодняшней демонстрации я создал hello/controllers/StorageController.php с методами экшенов для запуска каждого примера, например https://localhost:8888/hello/storage/browse для просмотра каталогов.

Эти методы, в свою очередь, вызывают созданную мной модель Storage.php с помощью собственных методов.

Вот код контроллера:

Он запрашивает, чтобы модель Storage постучалась в облако в «S3ky» и просмотрела справочный каталог.

Каждый раз, когда экземпляр модели Storage.php создается, он загружает расширение AWS SDK и создает экземпляр S3:

В моем примере browse я просто вывожу каталоги и файлы, но вы можете свободно настраивать этот код по мере необходимости:

Yii AWS S3 - Browse S3 Objects a listing of directories and files
Yii AWS S3 - Browse S3 Objects a listing of directories and files
Yii AWS S3 - Browse S3 Objects a listing of directories and files

Загрузка файлов

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

И вот метод модели Storage:

Переход по http://localhost:8888/hello/storage/upload отображает возвращаемый URL-адрес, из которого я могу просмотреть загруженный файл, потому что я указал public-read в моем коде выше:

Yii AWS S3 - Results of Upload method - a URL to the new file
Yii AWS S3 - Results of Upload method - a URL to the new file
Yii AWS S3 - Results of Upload method - a URL to the new file

В свою очередь, просмотр адреса S3 показывает содержимое загруженного файла:

Скачивание файлов

Вот код контроллера для скачивания файла:

Поскольку браузер отвечает на content-type, то он должен отображать соответствующее изображение, которое я здесь запрашиваю.

Примечание. Я загружаю обложку из моего опыта, выйдя замуж за корпорацию «Корпоративный человек» (да, это на самом деле произошло). Брак не сложился.

Вот код модели Storage для скачивания:

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

Yii AWS S3 - Marriage Scene with Woman and Marriage License
Yii AWS S3 - Marriage Scene with Woman and Marriage License
Yii AWS S3 - Marriage Scene with Woman and Marriage License

Разумеется, вы можете так же легко сохранить результаты на своем сервере в файле. Вам решать. Я призываю вас поиграть с кодом и настраивать его по мере необходимости.

Что дальше?

Надеюсь, это поможет вам в использовании AWS S3 из приложения Yii.

Если вам нравится концепция облачного объекта и хранилища файлов, но вы хотите найти других поставщиков, ознакомьтесь с Альтернативами Amazon AWS. Я постепенно уходил от AWS по ряду причин, упомянутых в статье. Одна из моих следующих задач - перенести мои объекты S3, которые все еще частично используются для моего собственного сервера, которые я могу зеркалировать с помощью KeyCDN.

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

Если вы хотите узнать, когда будет готов следующий учебник Yii2, следуйте за мной @reifman в Twitter или проверьте мою страницу инструктора.

С вами Александр Макаров, samdark и этой второй выпуск в этом году. Я попросил членов команды написать что-то для вступления, но, похоже, они предпочитают писать код :)

Есть новости по важным обновлениям Yii 3 и набор релизов Yii 2. Также упомянем некоторые интересные проекты, не связанные напрямую с кодом.

Статусная страница

Так как вопрос "Как вообще дела с Yii3?" задают слишком часто, мы сделали страницу с прогрессом по пакетам Yii3. Считается просто: пакет со стабильным релизом считается готовым, пакет без стабильного релиза — нет. Фреймворк не требует релиза абсолютно всех пакетов, так что бета выйдет раньше, чем будет 100%. Чуть позже мы добавим ссылку на эту страницу с главной страницы официального сайта.

Улучшения дизайна

Создатель awesomic пригласил нас использовать сервис бесплатно в качестве благодарности за Yii 2. Сейчас мы не хотим делать полный редизайн сайта так как это существенно отвлечёт нас от Yii3. Поэтому, сделаем следующее:

  • Освежим логотип без потери узнаваемости.
  • Сделаем согласованный стайл-гайд с логотипом, цветами, формами, шрифтами и так далее.
  • То же для диаграмм и схем в документации.
  • Сделаем хорошую стартовую страницу для шаблонов приложений и внешний вид для демо.
  • Сделаем хороший внешний вид для дебаггера и Gii.


Сообщество

Сообщество Yii всегда мигрировало с платформы на платформу. Во времена Yii 1 главной площадкой был форум. Он и сейчас является лучшим местом для сложных вопросов потому как отлично индексируется поисковиками. В качестве чата мы использовали IRC. Позже сообщества сформировались в Facebook и StackOverflow. IRC для многих был неудобен, поэтому мы попробовали Gitter и Slack.

Сейчас Yii3 мы больше всего обсуждаем в Telegram и, похоже, он стал более популярен, чем Slack.

Yii 2

Готов большой набор обновлений:

Yii 3

Разработка Yii3 идёт немного медленней, чем хотелось бы. Тем не менее, прогресс мне очень нравится. Мы выпускаем всё больше стабильных независимых пакетов и постоянно улучшаем основы, такие как конфигурацию и контейнер.

  • Injector 1.0.4.
  • Test support 1.2.1 и 1.3.0.
  • HTML 1.0.0, 1.1.0 и 1.2.0.
  • Var dumper 1.0.5 и 1.1.0.
  • Profiler 1.0.0.
  • Cookies 1.1.0 с новыми возможностями по безопасности.

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

Шаблоны приложений и демо

Роутинг и диспетчер middleware

Asset-ы

Пакет assets близок к релизу: решены все известные проблемы, написана документация, достигнуто отличное покрытие тестами.

DI и Factory

Мы опять поломали синтаксис. __class теперь class , свойства префиксируются $ . namespace-ы тоже немного поменяли. Скорее всего это последнее такое изменение в декларативном синтаксисе контейнера.

Эти изменения позволили нам добавить метаданные без какого-либо шанса на конфликт со свойствами:

  • Добавили поддержку тегов. Полезно если хотите скормить одному сервису массив других сервисов.
  • Добавили поддержку сброса состояния. Это необходимо для сервисов с состоянием при работе в режиме event loop.

Конфиги

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

  • Список пакетов теперь строится с учётом зависимостей и вложенности.
  • Опции выделены в отдельные ключ config-plugin-options.
  • Добавлена возможность указать базовый путь до конфигах пакета. Получается меьше подпапок.
  • Улучшены сообщения об ошибках.
  • Добавлен интерактивный режим, который позволяет смотреть diff, обновлять конфиги и ещё всякое.
  • В большее количество пакетов добавлены конфиги по умолчанию.


На этом мы не останавливаемся. Будут ещё улучшения.

Data response

Translator

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

Консоль

Docker

Исправил образы Docker, включая образы под Nginx. Теперь они автоматически собираются через GitHub actions и доступны на Docker hub.

Новая и обновлённая документация

Почитать

️ Спасибо!

Хочу сказать спасибо всем спонсорам и разработчикам, благодаря которым стала возможна разработка Yii 3. Вместе у нас всё получится!

  • CraftCMS — Отличная OpenSource CMS на Yii2.
  • Onetwist Software — Услуги качественной разработки приложений.
  • SkillShare — Обучение новым навыкам.
  • Betteridge — Ювелирные изделия.
  • dmstr — Облачные решения на основе Docker.
  • HumHub — OpenSource решения для общения команды.
  • JetBrains — Отличные инструменты для разработки.
  • Skin.Club — Рынок скинов для CS:GO.
  • EFKO Group — фудтех, производство продуктов питания, и венчурные инвестиции. С недавнего времени ещё и ЭФКО Цифровые Решения, отдельная растущая сервисная IT-компания, которая планирует заниматься не только внутренними проектами ЭФКО.

Отдельное спасибо тем, кто помог Yii 3 кодом:


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

Рассмотрим подробнее, как работает АСК НДС 2 и в чем отличие этого сервиса от АСК НДС 3 — более продвинутой версии системы.

  • АСК НДС: что это за программа
  • АСК НДС 2 и АСК НДС 3: в чем отличия
  • Как работает система контроля
  • Как АСК НДС выявляет налоговые риски
  • Налоговый разрыв по НДС
  • Сложные налоговые разрывы по НДС и углубленная камеральная проверка

АСК НДС: что это за программа

АИС АСК НДС предназначена для того, чтобы анализировать декларации по налогу на добавленную стоимость, которые сдают субъекты предпринимательства. Она сравнивает уплаченный и предъявленный к возмещению налог и на основе этого сравнения выявляет субъектов предпринимательства, которые незаконно предъявляют НДС к вычету.

Кроме того, АСК НДС 3 обнаруживает признаки уклонения от других видов налогов. Например, с помощью этого сервиса можно выявить компании, которые минимизируют налог на прибыль или уклоняются от его уплаты путем использования фиктивных компаний в качестве контрагентов, оказывающих выдуманные услуги.

АСК НДС 2 и АСК НДС 3: в чем отличие

Первая версия АИС АСК НДС вышла в 2013 году по инициативе Федеральной налоговой службы РФ. Основная цель запуска этой автоматизированной компьютерной системы — предотвращение незаконных действий со стороны плательщиков при начислении НДС и предъявлении налога к вычету (возмещению из бюджета).

Система АСК НДС позволяет без участия налогового инспектора выявить недобросовестные действия плательщика налога.

В 2015 году появилась вторая версия системы. Она стала работать более эффективно, появилась возможность выявлять фиктивные компании, которые используются в схемах возмещения НДС. Она позволила анализировать не только налоговые декларации, но и книги покупок и продаж каждого субъекта предпринимательства в цепочке.

Благодаря АИС АСК НДС можно проследить всю цепочку переводов, не прибегая к кропотливому анализу документов плательщиков.

АСК НДС 3 — это самая новая система автоматизированного контроля денежных средств. Она дает возможность отследить перемещение денег между счетами компаний и физических лиц. Инспектора налоговой службы прогнозируют увеличение эффективности системы на 90% в сравнении с текущим уровнем.

В третьей версии системы реализованы сложные алгоритмы анализа движения денежных средств, благодаря которому можно обнаружить факт уклонения от уплаты НДС и определить сумму доначисления. Кроме того, отслеживание платежа позволяет определить фиктивные субъекты предпринимательства и зависимые компании.

Как работает система контроля

Схема работы системы АСК НДС 3 достаточно проста. Сервис проводит проверку деклараций с помощью особых алгоритмов. После сдачи деклараций АИС проверяет:

  • Совпадение сумм, указанных во взаимосвязанных разделах налоговой декларации. Например, при сдаче налоговой отчетности по НДС информация из частей 8 и 9 должна совпадать с информацией из раздела 3;
  • Совпадение реквизитов компании, которая сдала отчетность, с реквизитами, указанными у ее контрагентов. То есть суммы в декларации проверяемого субъекта и его контрагента должны быть равными. Проверяется сумма НДС к вычету покупателя и сумма налога к уплате продавца.
  • Совпадение сумм НДС, которые указываются плательщиком при составлении платежного поручения. Эту сумму алгоритм считывает и сравнивает с той, что указана в налоговой декларации по НДС.

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

Обратите внимание, если требование было отправлено ошибочно, необходимо в любом случае ответить в ИФНС во избежание санкций вплоть до приостановления операций по расчетному счету.

Как АСК НДС выявляет налоговые риски

При сдаче отчетности сервис автоматически присваивает декларациям разные статусы. Как система АСК НДС 2 распределяет налогоплательщиков? Существует градация из трех уровней:

  1. Высокий. К нему относятся компании, при проверке которых ранее были выявлены нарушения налогового законодательства. Также в этой категории находятся субъекты предпринимательства, которые платят минимальные суммы налогов. Велика вероятность, что по результатам работы автоматизированной системы будет назначена выездная проверка.
  2. Средний. В этой категории представлены компании, которые не полностью выполняют налоговые обязательства перед государством.
  3. Низкий. Здесь представлены субъекты предпринимательства, которые не допускают нарушений и выплачивают налоги в сумме, которая характерна для отрасли и компании.

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

Налоговый разрыв по НДС

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

С помощью автоматической системы определяются два типа нарушений:

  1. Разрывы. К ним относятся непредоставление налоговой декларации в установленный законом срок или сдача отчетности с нулевыми показателями. Также система определяет отсутствие аналогичной операции у контрагента (только с уплатой НДС.
  2. Расхождение между документами контрагентов. Алгоритм определяет факт предъявления к вычету НДС в сумме, которая превышает сумму уплаченного налога в документах контагента.
Дерево связей АСК НДС позволяет, например, определить, что отраженная в книге покупок операция по приобретению товара с НДС отсутствует в книге продаж продавца, который должен этот НДС уплатить. Следовательно, и предъявление к вычету является незаконным.

Если будет обнаружено расхождение, АИС АСК НДС самостоятельно формирует требование и отправляет его в адрес проверяемой компании. Инспектор в этом процессе участия не принимает, что облегчает его работу.

Сложные налоговые разрывы по НДС и углубленная камеральная проверка

Налоговый инспектор включается в работу в том случае, если компания не отреагировала на направленное требование либо система АСК НДС путем анализа сложного дерева связей выявила использование транзитных или фиктивных компаний для маскировки уклонения от уплаты НДС.

Например, компания приобретала ТМЦ не напрямую у фиктивной компании, а через несколько транзитных фирм. При поверхностной проверке эта сделка будет законной, но фактически НДС в бюджет не уплачен. Значит, и предъявлять его к вычету незаконно.

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

Для этого анализируются следующие сведения:

  • ФИО руководителя или учредителя, определение факта участия должностного лица в управлении или регистрации большого количества компаний («массовый руководитель»);
  • Количество сотрудников, которые работают компании;
  • Наличие требования об исключении компании из реестра вследствие того, что оно не работает в соответствии с законодательством РФ;
  • Недостоверная информация о должностных лицах или собственниках компании, ее фактическом адресе в реестре юридических лиц;
  • Наличие протоколов допросов должностных лиц или участие в управлении компании людей, которым судом запрещено занимать эту должность;
  • Количество расчетных счетов и наличие информации о том, что движение денег по ним приостанавливалось по какой-либо причине;
  • Налоговая нагрузка и процент налоговых отчислений в сравнении с оборотом компании;
  • Наличие задолженностей по уплате налогов и взносов в государственные фонды;

Инспектор может проверить и другую информацию в зависимости от глубины проверки.

В конце прошлого года SitePoint опубликовал статью, в которой освещались основные фреймворки PHP. Для пятого места было выбрано Yii (произносится Yee ) Framework. В то время самой последней доступной версией фреймворка была 1.1.14. Недавно появился Yii 2.0, так что вы можете начать использовать его в производстве.

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

1. Простота установки

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

Установка выполняется с помощью Composer . Если вам нужно описание процесса установки, Sitepoint недавно опубликовал отличную статью здесь . Я предпочитаю использовать базовый шаблон приложения, даже если на моем сайте есть отдельный фронтальный и внутренний компоненты. Вместо этого я предпочитаю использовать модуль для серверной части моих сайтов. (Модули Yii лучше всего описать как мини-приложения, которые находятся внутри вашего основного приложения).

Примечание . Многие из ссылок на каталоги в последующих примерах используют структуру каталогов из простого шаблона.

2. Использует современные технологии

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

Все классы имеют пространство имен, что позволяет вам воспользоваться их автозагрузчиком, совместимым с PSR-4. Это означает, что включение вспомогательного класса HTML Yii так же просто, как:

Yii также позволяет вам определять псевдонимы, чтобы упростить ваши пространства имен. В приведенном выше примере этот оператор use загрузит определение класса, которое по умолчанию находится в каталоге /vendor/yiisoft/yii2/helpers . Этот псевдоним определен в классе BaseYii в строке 79:

Сам фреймворк устанавливается с помощью Composer, как и его расширения. Даже процесс публикации расширений так же прост, как создание собственного composer.json , размещение кода на Github и размещение вашего расширения на Packagist.

3. Высоко Расширяемый

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

Сначала я бы создал файл в каталоге app\components с именем View.php и добавил следующее:

Затем в моем основном файле макета ( app\views\layouts\main.php ) я добавил бы следующее к тегу body моего HTML:

И, наконец, я бы добавил следующее в мой основной файл конфигурации, чтобы Yii знал, чтобы использовать мой расширенный класс View вместо его собственного значения по умолчанию:

4. Поощряет тестирование

Yii тесно интегрирован с Codeception . Codeception — это отличная среда тестирования PHP, которая помогает упростить процесс создания модульных, функциональных и приемочных тестов для вашего приложения. Потому что вы пишете автоматизированные тесты для всех ваших приложений, верно?

Расширение Codeception упрощает настройку приложения во время тестирования. Просто отредактируйте предоставленный файл /tests/_config.php чтобы настроить тестовое приложение. Например:

Используя эту конфигурацию, произойдет следующее:

  1. Любые электронные письма, отправленные во время ваших функциональных и приемочных тестов, будут записаны в файл, а не отправлены.
  2. URL-адреса в ваших тестах будут иметь формат index.php/controller/action а не /controller/action
  3. Ваши тесты будут использовать вашу тестовую базу данных, а не производственную базу данных.

Специальный модуль для Yii Framework также существует в Codeception. Он добавляет несколько методов в класс TestGuy , которые помогают вам работать с Active Record (Yii’s ORM) во время функциональных тестов. Например, если вы хотите проверить, успешно ли в вашей регистрационной форме был создан новый User с именем пользователя «testuser», вы можете сделать следующее:

5. Упрощает безопасность

Безопасность является важной частью любого веб-приложения, и, к счастью, в Yii есть несколько замечательных функций, которые помогут вам расслабиться.

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

  • generatePasswordHash : генерирует безопасный хеш из пароля и случайной соли. Этот метод создает случайную соль для вас, а затем создает хеш из предоставленной строки, используя PHP-функцию crypt .
  • validatePassword : это сопутствующая функция для generatePasswordHash , которая позволяет вам проверить, соответствует ли введенный пользователем пароль вашему сохраненному хешу.
  • generateRandomKey : позволяет создать случайную строку любой длины

Yii автоматически проверяет допустимый токен CSRF для всех небезопасных методов HTTP-запросов (PUT, POST, DELETE) и генерирует и выводит токен, когда вы используете метод ActiveForm :: begin () для создания тега открываемой формы. Эту функцию можно отключить, отредактировав ваш основной файл конфигурации, чтобы включить следующее:

Для защиты от XSS Yii предоставляет еще один вспомогательный класс, называемый HtmlPurifier . Этот класс имеет единственный статический метод с именем process и будет фильтровать ваши выходные данные, используя популярную библиотеку фильтров с тем же именем.

Yii (произносится как «Yee» или [ji:]) — это высокопроизводительный веб-каркас, написанный на PHP, и реализующий парадигму MVC. [1] Yii — сокращение от «Yes It Is!»

Содержание

История

История Yii началась 1 января 2008 года, как проект по исправлению некоторых изъянов в фреймворке PRADO (PHP Rapid Application Development Object-oriented), ставшего в 2004 победителем «Zend PHP 5 coding contest» [2] [3] .

Фреймворк PRADO был попыткой перенести ASP.NET на платформу PHP, включая ViewState, PostBacks, Page_Load и OnClick. Если посмотреть исходный код, то можно увидеть что некоторые куски кода просто скопированы из ASP.NET (например, разделение на Rare Fields и Occasional Fields в классе Control [4] с целью оптимизации по памяти, которое имеет смысл в .NET, но представляет сомнительную ценность в PHP).

PRADO унаследовал от ASP.NET почти все отрицательные стороны: медленно обрабатывал сложные страницы, имел крутую кривую обучения и был довольно труден в настройке. [5]

В определенный момент автор (Qiang Xue) понял, что PHP-фреймворк должен быть построен несколько по-другому, и вот в октябре 2008 года, после более 10 месяцев закрытой разработки, вышла первая альфа-версия. 3 декабря 2008 был выпущен Yii 1.0 [1]

Возможности

  • Высокая производительность
  • Парадигма Модель-вид-контроллер
  • Интерфейсы DAO и ActiveRecord для работы с базами данных (PDO)
  • Поддержка интернационализации
  • Кэширование страниц и отдельных фрагментов
  • Перехват и обработка ошибок
  • Ввод и валидацияформ (англ.) русск.
  • Аутентификация и авторизация
  • Использование AJAX и интеграция с jQuery
  • Генерация базового PHP-кода для CRUD-операций (скаффолдинг)
  • Поддержка тем оформления для их лёгкой смены
  • Возможность подключения сторонних библиотек
  • Миграции базы данных
  • Автоматическое тестирование
  • Поддержка REST

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

По результатам тестов phpmark Yii показал самую лучшую производительность. [6]

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

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

  • Yii активно развивается [7]
  • Yii не выглядит «монстром» по сравнению с фреймворками symfony и Zend (у которых число строк кода соизмеримо с числом строк кода операционных систем) [8]
  • В некоторых сравнительных работах отмечается высокая скорость изучения фреймворка, получения результатов и прототипирования по сравнении с Zend и Symfony. Также отмечается его стабильность и безопасность. [9][10]

История версий

Книги

  • Merkel Dirk Chapter 6: PHP Frameworks // Expert PHP 5 Tools. — Packt Publishing, 2010. — ISBN 978-1-847198-38-9
  • Winesett Jeffrey Agile Web Application Development with Yii1.1 and PHP5. — Packt Publishing, 2010. — ISBN 978-1-847199-58-4
  • Makarov Alexander Yii 1.1 Application Development Cookbook. — Packt Publishing, 2011. — ISBN 978-1-84951-548-1

Ссылки

  • Официальный сайт
  • Русскоязычное сообщество
  • Yiiclipse — поддержка Yii для Eclipse PDT
  • Chive — аналог phpMyAdmin, разработанный с использованием Yii
  • Yii Radio

Примечания

  1. 12About Yii. Архивировано из первоисточника 27 апреля 2012.Проверено 22 августа 2010.
  2. ↑About PRADO. Архивировано из первоисточника 27 апреля 2012.Проверено 22 августа 2010.
  3. ↑PHP5 Coding Competition Winners, Google Blogoscoped (26 октября 2004). Проверено 7 февраля 2012.
  4. ↑PRADO, TControl source
  5. ↑Yii: a high-performance framework inheriting Prado (6 October 2008). Архивировано из первоисточника 27 апреля 2012.Проверено 22 августа 2010.
  6. ↑Performance of Yii
  7. ↑Yii 1.1.9
  8. ↑Сравнение PHP фреймворков — Kohana Yii Symfony CodeIgniter
  9. ↑Evaluierung von PHP Frameworks
  10. ↑Сравнение популярных PHP-фреймворков
  11. ↑Yii Framework Change Log
  12. ↑Yii Framework Change Log
  13. ↑http://www.yiiframework.com/files/CHANGELOG-1.1.12.txt
  14. ↑http://www.yiiframework.com/files/CHANGELOG-1.1.13-RC.txt
  15. ↑Download Yii Framework | Yii Framework

ColdSpring • Fusebox • Mach-II • Model-Glue

Apache (Cocoon • Struts • Velocity • WebWork 2) • AppFuse • Aranea • Eclipse • Facelets • Flexive • FreeMarker • Google Web Toolkit • Grails • Hamlets • ItsNat • JavaServer Faces • Jspx • JBoss Seam • jZeno • Makumba • OpenLaszlo • OpenXava • Reasonable Server Faces (RSF) • Restlet • RichFaces • RIFE • Shale • SmartClient • Spring • Stripes • Tapestry • ThinWire • Vaadin • WebMacro • WebWork • WebObjects • Wicket • ZK

Catalyst • Interchange • Titanium • Maypole • HTML:Mason

Acode • Akelos • BlueShoes • CakePHP • Canvas • CodeIgniter • Cotonti • DIY • Drupal • Fuse • Horde • Kohana • LiveStreet • PHP For Applications • PHPOpenbiz • PRADO • Qcodo • Seagull • Solar • Symfony • W3Core • Yii • Zend • Zoop • Joomla

Camping • Nitro • IOWA • Ramaze • Cerise • Merb • Ruby on Rails • Sinatra • Padrino

Wikimedia Foundation . 2010 .

  • Yhden enkelin unelma
  • Yin-Yang! X-Change Alternative

Смотреть что такое "Yii" в других словарях:

Yii — Framework Desarrollador Yii Software LLC http://www.yiif … Wikipedia Español

YII — Yes It Is (Internet » Chat) … Abbreviations dictionary

YII — Yugular interna izquierda … Diccionario de siglas médicas y otras abreviaturas

yii — ISO 639 3 Code of Language ISO 639 2/B Code : ISO 639 2/T Code : ISO 639 1 Code : Scope : Individual Language Type : Living Language Name : Yidiny … Names of Languages ISO 639-3

YII — abbr. Yes It Is … Dictionary of abbreviations

Yii Framework — Yii Développeur Yii developper team … Wikipédia en Français

Yii Framework — AfDM|page=Yii Framework|date=2008 October 9|substed=yes Infobox Software name = Yii Framework developer = Yii Software LLC latest release version = 1.0a latest release date = October 5, 2008 genre = Web application framework license = BSD License … Wikipedia

Malaysian contemporary music — (or art music , notated music ) is an artistic phenomenon within Malaysia that gained visibility and momentum in 2002, when the Malaysian Philharmonic Orchestra programmed several works by Malaysian composers, namely Chong Kee Yong s Echoed Dream … Wikipedia

Holden Special Vehicles — Type Private Industry Automotive Founded 1988 Founder(s) Tom Walkinshaw … Wikipedia

St. John's Institution, Kuala Lumpur — Infobox Malaysia school name = St. John s Institution motto = Fide et Labore (Latin) Faith and Zeal established = 18 January 1904 type = Government aided non boarding secondary school status = Cluster school affiliations = Ministry Of Education… … Wikipedia

Читайте также: