Полное руководство по Yii 2.0

Введение

  • О Yii
  • Обновление с версии 1.1

Первое знакомство

  • Установка Yii
  • Запуск приложения
  • Говорим «привет»
  • Работа с формами
  • Работа с базами данных
  • Генерация кода при помощи Gii
  • Что дальше?

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

  • Обзор
  • Входные скрипты
  • Приложения
  • Компоненты приложения
  • Контроллеры
  • Модели
  • Представления
  • Модули
  • Фильтры
  • Виджеты
  • Ресурсы
  • Расширения

Обработка запросов

  • Обзор
  • Bootstrapping
  • Разбор и генерация URL
  • Запросы
  • Ответы
  • Сессии и куки
  • Обработка ошибок
  • Логирование

Основные понятия

  • Компоненты
  • Свойства
  • События
  • Поведения
  • Конфигурации
  • Псевдонимы
  • Автозагрузка классов
  • Service Locator
  • Dependency Injection Container

Работа с базами данных

  • Объекты доступа к данным (DAO)
  • Построитель запросов
  • Active Record
  • Миграции
  • Sphinx
  • Redis
  • MongoDB
  • ElasticSearch

Получение данных от пользователя

  • Создание форм
  • Валидация
  • Загрузка файлов
  • Табличный ввод
  • Работа с несколькими моделями
  • Расширение ActiveForm на стороне клиента

Отображение данных

  • Форматирование данных
  • Постраничная разбивка
  • Сортировка
  • Провайдеры данных
  • Виджеты для данных
  • Работа с клиентскими скриптами
  • Темизация

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

  • Обзор
  • Аутентификация
  • Авторизация
  • Работа с паролями
  • Криптография
  • Клиенты авторизации
  • Лучшие практики

Кеширование

  • Обзор
  • Кэширование данных
  • Кэширование фрагментов
  • Кэширование страниц
  • HTTP кэширование

Веб-сервисы REST

  • Быстрый старт
  • Ресурсы
  • Контроллеры
  • Роутинг
  • Форматирование ответа
  • Аутентификация
  • Ограничение частоты запросов
  • Версионирование
  • Обработка ошибок

Инструменты разработчика

  • Отладочная панель и отладчик
  • Генерация кода с Gii
  • Генератор документации API

Тестирование

  • Обзор
  • Настройка тестового окружения
  • Модульные тесты
  • Функциональные тесты
  • Приёмочные тесты
  • Фикстуры

Специальные темы

  • Шаблон приложения advanced
  • Создание приложения с нуля
  • Консольные команды
  • Встроенные валидаторы
  • Интернационализация
  • Отправка почты
  • Оптимизация производительности
  • Окружение виртуального хостинга
  • Шаблонизаторы
  • Работа со сторонним кодом
  • Использование Yii в качестве микро-framework’а

Виджеты

Хелперы

  • Обзор
  • ArrayHelper
  • Html
  • Url хелпер

Пятиминутка PHP — Подкаст о PHP, DBA, архитектуре, DevOps.

Авторское мнение о современных трендах в веб-разработке и интересные беседы с гостями. Помимо PHP поднимаем темы про инфраструктуру, администрирование Linux и DevOps подходы, сравниваем PHP с другими языками программирования, например с Go, Rust и даже Erlang.

Тема этого выпуска: самописные инфраструктурные компоненты – зачем они нужны и чем не угодили Open Source аналоги, помимо фатального недостатка?

Отвечает Валентин Удальцов – автор телеграм канала Пых https://t.me/phpyh

  • Пишет ли Валентин собственный фреймворк?
  • Что такое инфраструктурный компонент? Определение
  • Примеры инфраструктурных компонент, написанных в команде Валентина: работа с БД, виладтор+гидратор на типах статанализа, шина сообщений
  • История появления библиотеки для работы с запросами к БД и чем не подошли популярные решения?
  • Учёт нюансов PostgreSQL, нативная работа с JSON в СУДБ
  • Неудобства Doctrine Query Language (DQL)
  • Неудобства Doctrine DBAL
  • Single Responsibility принцип в Doctrine
  • Конвертация типов из PHP в БД и в обратную сторону из БД в PHP
  • Коммит в Open Source библиотеку vs написание своей собственной реализации
  • Стоимость разработки самописных компонент для бизнеса
  • Мотивация команды
  • Распространение знаний внутри компании, документация
  • Тесты как документация
  • Сегодня самописные компоненты, а завтра самописный фреймворк?
  • Безопасность собственного решения
  • Свой фреймворк или свой Open Source как часть HR-бренда
  • Как отличить резонную разработку
  • Кто принимает финальное решение о старте собственной разработки вместо использования готового решения?
  • Подробности про собственную шину сообщений (Message Bus компонент)
  • Вопросы гарантированной доставки сообщений
  • Паттерн Outbox https://habr. com/ru/company/lamoda/blog/678932/
  • Недостатки Symfony Messanger Component
  • Работа с middleware в шине сообщений – разные middleware для разных обработчиков
  • Routing Topology
  • Exchange сообщения – Fanout – Exchange модуля/очереди
  • Поддержка паттерна Saga
  • Отделение класса с состоянием от класса с поведением, но с сохранением инкапсуляции
  • Когда будет опубликована библиотека для работы с запросами к БД Thesis? https://phprussia.ru/moscow/2021/abstracts/7654
  • Перфекционизм vs Тщательность
  • Польза не только от самописного решения, но и от знаний полученных в процессе его написания
  • Цели на 2023 год
Формат АудиоОпубликовано

В этом выпуске Юлия Беймлина, продуктовый методист курса «Английский для разработчиков» от Яндекс Практикума

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

  • В чём отличие преподавания английского языка для различных профессий (программисты, юристы, ученые…)?
  • «Можно говорить грамотно, но неуместно»
  • Английский для разработчика — отличается ли подход к обучению чисто программистов (кодеров) и тимлидов?
  • Какие бывают уровни знания английского? A1, A2, B1, B2, C1, C2 — что всё это значит?
  • Какого уровня достаточно для разработчика?
  • А для тимлида или IT-менеджера?
  • Сколько времени и усилий нужно для достижения этого уровня?
  • Что такое Intermediate-плато и как его пройти?
  • Культурный код и его значение уже на этапе собеседования
  • Что не важно при обучении английскому языку?
  • Как тренировать произношение?
  • Насколько русский акцент понятен на слух?
  • Грамматические ошибки: критичные и нет
  • Самостоятельное обучение до уровня B2 — это реально?
  • Рецептивные и продуктивные навыки
  • Полезные инструменты и программы для изучения английского языка (в том числе внутри PhpStorm!)
  • Пополнение словарного запаса по карточкам — насколько это эффективно?

Этот выпуск выходит при поддержке Яндекс Практикума.

Узнать больше о курсе «Английский для разработчиков»: https://clck.ru/qzoT9

Приложения, упоминавшиеся в подкасте:

  • https://elsaspeak.com
  • https://quizlet.com
  • https://support.google.com/mail/answer/9116836
  • https://www.jetbrains.com/help/phpstorm/spellchecking.html

Также рекомендую послушать другой подкаст с участием Юли: «Запуск завтра. Как учить английский»

Удивительно, насколько разные бывают подкасты, казалось бы, с одной темой и одним гостем! В «Запуске завтра» были раскрыты совершенно другие вопросы, очень интересно получилось, рекомендую.

Формат АудиоОпубликовано

Небольшая заметка с полей.

Недавно втянулся в использование SQL синтаксиса LEFT JOIN LATERAL – ключевое слово LATERAL. Буквально по-другому стал смотреть на решение некоторых задач!

Проверил по документации, погугил, в популярных PHP ORM – нигде нет поддержки LATERAL, ни в Doctrine, ни в Laravel Query Builder, ни в Yii Query Builder, ни в Cycle ORM

И тут хочу дать пояснение, моё отношение к различным Query Builder и обёрткам над SQL синтаксисом. Вот какой подход я применяю при выборе между написанием простого SQL и использованием Query Builder / ORM:

• Если мне нужно поработать с конкретной сущностью в ООП стиле, скорее всего у меня уже есть описание модели реализованное для той или иной ORM, соответственно использую модель, использую ООП, под капотом все запросы за меня строит и выполняет ORM;

• Зачастую базовый фреймворк / админка / CRM предоставляют некую точку расширения, где нужно вписать небольшую функцию или переопределить метод и в этой точке расширения фреймворк нам в явном виде передаёт заготовку Query Builder – использую эту заготовку, навешивая свои дополнения к запросу. Обычно в этот Query Builder я добавляю условия отбора или атрибуты;

• Если я сам пишу некий фреймворк и подготавливаю эти точки расширения для будущих программистов, то создаю заготовку Query Builder;

• Во всех остальных случаях, когда надо сделать выборку из базы и, скорее всего, это выборка из двух или более таблиц, да ещё с подзапросами или EXISTS – тогда предпочитаю чистый SQL! Обычный SQL хорошо читается глазами, хорошо подсвечивается в PhpStorm и отлаживать его гораздо проще, чем Query Builder с миксом из анонимных функций.

По моей схеме выше кажется, что чистый SQL занимает всего один пункт из четырёх, но на практике это не так уж мало!

Ещё одно возражение против написания SQL – я ухожу от высокоуровневых абстракций работы с сущностями и их связями и проваливаюсь на более низкий уровень хранения данных. Может лучше обернуть всю низкоуровневую работу как минимум в некий репозитории или использовать языки типа DQL? Может и лучше. Надо смотреть по ситуации.

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

С другой стороны, подобные классы репозитории со временем накапливают в себе совершенно разношерстные SQL запросы, множество частных случаев и в итоге превращаются некие GOD репозитории (по аналогии с GOD Object или Helper или Utils классами). Либо, если делить классы репозитории по модулям и подсистемам их становится так много, мы возвращаемся к тому, с чего начали – SQL запросы размазаны по коду всего проекта, сложно рефакторить схему.

Как всегда то или иное решение – это компромисс или tradeoff. Мой опыт и мой выбор таков, что я не стесняюсь писать запросы на чистом SQL по месту их применения, не вынося всю работу с базой в некие репозитории. А когда придёт время рефакторинга PhpStorm мне поможет. Да, PhpStorm умеет рефакторить и SQL запросы тоже! Я могу переименовать таблицу или атрибут во вкладке Database и этот переименование произойдёт и в кодовой базе, но только в тех местах, где PhpStorm разспознал SQL язык, сделал так называемый language injection. Конечно, переименование и Find Usages в PhpStorm не покрывают всех сценариев рефакторинга схемы данных, но как это часто бывает по правилу Парето – в 80% случаев достаточно.

Под конец дам ссылку на презентацию доклада Валентина Удальцова с PHP Russia 2021. Процитирую основные тезисы:

ORM, QueryBuilder’ы и прочие абстракции связывают руки при попытке использовать БД на полную катушку. Какой смысл выбирать между PostgreSQL, MySQL и Oracle, если ваша библиотека всё равно не умеет в upsert, lateral join, returning, json path и оконные функции?

В докладе я расскажу, как мы в Happy Inc. прошли путь от Doctrine ORM через DBAL и кастомный QueryBuilder до нативных запросов в чистом виде, и объясню, почему это во всех смыслах выгодное архитектурное решение.

https://phprussia.ru/moscow/2021/abstracts/7654

Всем SQL!

Формат АудиоОпубликовано Метки mysql

Обсуждаем рынок труда с Глебом Кудрявцевым.

  • Кому проще уехать: IT менеджеру, сеньору, мидлу?
  • По каким причинам IT специалисты уезжают из России и будет ли нарастать отток кадров?
  • Чего не хватает IT бизнесу в России?
  • Как изменился рынок труда? Конкуренция за специалистов усилилась или наоборот, стала меньше?
  • Из-за ухода многих компаний стало ли сложнее найти работу? Кому?
  • Какой язык нужно учить? JavaScript vs Английский
  • Будет ли взрывной рост зарплат для дефицитных программистов, обгоняющий инфляцию во много раз?
  • Деньги останутся только у больших и около государственных компаний?
  • Учите языки и культуры заранее, может пригодиться в любой непонятной ситуации!
Формат АудиоОпубликовано

В декабре 2021 года вышло обновление пакетного менеджера Composer, версия 2.2. Заявлено увеличение производительност в некоторых случаях на 90%.

https://blog.packagist.com/composer-2-2/

Как это возможно и почему Composer раньше был на столько прожорливым? Я изучил изменения в исходном коде и вот что я нашел…

Читать далее Оптимизация производительности в Composer 2.2

Формат АудиоОпубликовано Метки Composer

Прохожу опрос в прямом эфире. Форма опроса уже закрыта, в феврале 2022 опубликуем результаты.

Формат ВидеоОпубликовано

В обзоре участвовали следующие клавиатуры:
0:00 – Keychrone K3, Blue (оценка 4)
1:04 – Varmilo VA87Mac, Brown (оценка 4)
1:58 – Keychrone K1, Red (оценка 5-)
2:58 – Keychrone K12, Brown (оценка 3)
4:40 – Keychrone K8, Brown (оценка 5)
5:38 – GMMK, Silver (оценка 5)
8:01 – ESPORTS FL680 (оценка 4)
9:18 – Varmilo MA87M Moonlight (оценка 5-)
10:51 – подведение итогов, TOP 3 клавиатуры!

Формат ВидеоОпубликовано

В конце прошлого (2020) года прошел первый большой опрос русскоязычного PHP-сообщества в котором приняло участие свыше 1500 человек (результаты прошлого года).

С декабря 2021 по середину ярваря 2022 проходил аналогичный опрос, составленный активными участниками нашего сообщества. Фокус на технологиях и контенте.

Понадобится некоторое время на обработку результатов и в феврале 2022 будут опубликованы результаты в виде интерактивных графиктов и доступного для скачивания архива на сайте phpcommunity. ru. Список лучших видео, статей и инструментов будет опубликован на Хабре.

[Здесь раньше была ссылка «Принять участие в опросе». Опрос уже закрыт, скоро будет ссылка на результаты.]

Формат СсылкаОпубликовано

Один из основных на сегодняшний день разработчиков PHP Никита Попов рассказал в своём блоге некоторые детали работы OPcache.

OPcahce — это расширение для PHP, которое ускоряет работу за счёт кэширования опкодов.

В этом выпуске подкаста Пятиминутка PHP сделаю краткий пересказ, поробую объяснить своими словами.

https://www.npopov.com/2021/10/13/How-opcache-works. html

Формат АудиоОпубликовано

Поговорим на несколько разных тем: подкаст и конференция YaTalks, первые впечатления от Yii3, PHP 8.1 уже близко, Tinkerwell, Mac mini на M1, механические клавиатуры и коврик для мыши с JSON API.

  • https://yatalks.yandex.ru/
  • https://www.youtube.com/watch?v=ah2XoxCnjs4
  • https://t.me/yii3chronicles
  • https://gist.github.com/devanych/9475d7d3b0e2507b564c8d174a3c0fa7
  • https://stitcher.io/blog/new-in-php-81
  • https://tinkerwell.app
  • https://beyondco.de/blog/tinkerwell
  • https://geekboards.ru
  • https://ru. steelseries.com/gaming-mousepads/qck-prism-series
Формат АудиоОпубликовано

Замещенные катиноны — PsychonautWiki

Замещающая структура молекулы катинона.

Замещенные катиноны (также известные как катиноны или синтетические катиноны ) представляют собой химический класс психоактивных соединений, структура которых основана на катиноне. Класс состоит из всех производных соединений катинона, которые могут быть образованы путем замены или замещения одного или нескольких атомов водорода в структуре ядра катинона заместителями. Примеры включают MDPV, мефедрон, метилон и α-PVP.

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

Содержание

  • 1 Химия
  • 2 Фармакология
  • 3 Список замещенных катинонов
  • 4 См. также
  • 5 Внешние ссылки
  • 6 Каталожные номера

Химия

Замещенные катиноны представляют собой химический класс, основанный на молекуле катинона. Катиноны являются подкатегорией амфетаминов. Они имеют общую структуру ядра амфетамина, но отличаются от замещенных амфетаминов замещением кетона на бета-углероде структуры амфетамина. Таким образом, некоторые катиноны, такие как βk-MDMA, которые отличаются от популярного замещенного амфетамина заменой бета-кетона, получат название замещенного амфетамина с префиксом «бета-кето» / «βk-». Следует отметить, что, хотя технически это не замещенные катиноны, поскольку в них отсутствует альфа-углеродная метильная группа, присутствующая в катиноне, существует класс психоактивных соединений, которые отличаются от различных замещенных фенетиламинов заменой бета-кетона; прежде всего βk-2C-B.

Фармакология

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

Список замещенных катинонов

Соединение Р 2 Р 3 Р 4 Р 5 R α Р Н1 Р Н2 Структура
Катинон Х Х Х Х Ч 3 Х Х
Меткатинон Х Х Х Х Ч 3 Х Ч 3
Эткатинон Х Х Х Х Ч 3 Х CH 2 CH 3
2-MMC Ч 3 Х Х Х CH 3 Х Ч 3
3-MMC Х Ч 3 Х Х Ч 3 Х Ч 3
4-МС Х Х Ч 3 Х Ч 3 Х Х
Мефедрон ( 4-MMC ) Х Х Ч 3 Х Ч 3 Х Ч 3
4-МЭК Х Х Ч 3 Х Ч 3 Х CH 2 CH 3
3-ККМ Х Кл Х Х Ч 3 Х Ч 3
3-ЦИК Х Кл Х Х Ч 3 Х CH 2 CH 3
4-ККМ Х Х Кл Х Ч 3 Х CH 3
4-ЦИК Х Х Кл Х Ч 3 Х CH 2 CH 3
Бупропион Х Х Х Кл Ч 3 Х К(СН 3 ) 3
3-ФМС Х Ф Х Х Ч 3 Х Ч 3
Буфедрон Х Х Х Х CH 2 CH 3 Х Ч 3
Пентедрон Х Х Х Х CH 2 CH 2 СН 3 Х Ч 3
N-этил-нор-пентедрон ( NEP ) Х Х Х Х CH 2 CH 2 CH 3 Х CH 2 CH 3
Гекседрон Х Х Х Х СН 2 СН 2 СН 2 СН 3 Х Ч 3
N-этил-нор-гекседрон ( Hexen ) Х Х Х Х CH 2 CH 2 CH 2 CH 3 Х CH 2 CH 3
Гептедрон Х Х ч Х CH 2 CH 2 CH 2 CH 2 CH 3 Х Ч 3
N-этил-нор-гептедрон Х Х Х Х CH 2 CH 2 CH 2 CH 2 CH 3 Х CH 2 CH 3
4-этилпентедрон Х Х CH 2 CH 3 Х CH 2 CH 2 CH 3 Х Ч 3
4-метил-НЭП Х Х Ч 3 Х CH 2 CH 2 CH 3 Х CH 2 CH 3
α-ППП Х Х Х Х Ч 3 CH 2 CH 2 CH 2 CH 2
α-ПВП Х Х Х Х CH 2 CH 2 CH 3 CH 2 CH 2 CH 2 CH 2
α-PHP Х Х Х Х CH 2 CH 2 CH 2 CH 3 CH 2 CH 2 CH 2 CH 2
α-PHpP ( PV8 ) Х Х Х Х СН 2 СН 2 СН 2 СН 2 СН 3 CH 2 CH 2 CH 2 CH 2
4Ф-α-ПВП Х Х Ф Х CH 2 CH 2 CH 3 CH 2 CH 2 CH 2 CH 2
Мекседрон Х ч Ч 3 Х СН 2 ОСН 3 Х Ч 3
Метилон Х О-СН 2 О- Х Ч 3 Х Ч 3
Этилон Х О-СН 2 О- Ч Ч 3 Х CH 2 CH 3
Эутилон Х О-СН 2 О- Х CH 2 CH 3 Х CH 2 CH 3

Бутилон Х О-СН 2 О- Х СН 2 СН 3 Х Ч 3
Пентилон Х О-СН 2 О- Х CH 2 CH 2 CH 3 Х Ч 3
N-этил-нор-пентилон ( Эфилон ) Х О-СН 2 О- Х CH 2 CH 2 CH 3 Х CH 2 CH 3
МДПВ Х О-СН 2 О- Х CH 2 CH 2 CH 3 CH 2 CH 2 CH 2 CH 2
МДФХП Ч О-СН 2 О- Х CH 2 CH 2 CH 2 CH 3 CH 2 CH 2 CH 2 CH 2

См.

также
  • Ответственное использование
  • Исследовательские химикаты
  • Стимуляторы
  • Entactogens

Внешние ссылки

  • Замещенный катинон (Википедия)

Каталожные номера

В этой статье недостаточно ссылок.

Вы можете помочь, добавив некоторые.

PHP | Codecademy

Contribute to Docs

Mini Arrow Right Icon

PHP (рекурсивная аббревиатура от «PHP Hypertext Preprocessor») — популярный язык сценариев с открытым исходным кодом, широко используемый в качестве серверного инструмента для создания динамических веб-страниц.

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

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

PHP в действии

ScienceSoft, поставщик ИТ-консалтинга и разработки программного обеспечения из Далласа, предлагает примеры использования PHP-скриптов в проектах клиентов:

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

Symfony — французский поставщик фреймворка PHP, который работает над проектами на основе PHP для организаций всех типов. Это включает в себя предвыборный сайт президента Франции Эммануэля Макрона 2016 года.

Laravel — это еще одна PHP-инфраструктура, используемая для разработки веб-приложений. Он известен своим элегантным синтаксисом, модульной структурой и встроенными функциями, упрощающими разработку высококачественных веб-приложений. Многие ведущие компании используют Laravel для разработки своих веб-приложений, включая GitLab и Pfizer.

Наконец, CakePHP также является платформой с открытым исходным кодом, которая использовалась различными компаниями, в том числе:

  • Internet Marketing Ninjas, которые использовали PHP для создания своих инструментов маркетинга и управления, а также центрального узла для пользователей.
  • Printivo.com, нигерийская типографская компания, которая использовала PHP для своего веб-сайта, ориентированного на клиентов, и внутренних систем управления заказами.

Концепции PHP

  • Массивы
  • Классы
  • Комментарии
  • Условные выражения
  • Типы данных
  • Функции дат 90 022
  • Перечисления
  • Функции
  • Циклы
  • Математические функции
  • Операторы
  • Строковые функции
  • Переключатель
  • Переменные

Хотите внести свой вклад?

  • Узнайте больше о том, как принять участие.