Продвинутое использование ActiveRecord в Yii2Paul Klimov
Запись лекции "Продвинутое использование ActiveRecord в Yii2" от 24.09.2016, проходившей в Киеве в "Projector"
http://prjctr.com.ua/events/yii2-conference.html
Продвинутое использование ActiveRecord в Yii2Paul Klimov
Запись лекции "Продвинутое использование ActiveRecord в Yii2" от 24.09.2016, проходившей в Киеве в "Projector"
http://prjctr.com.ua/events/yii2-conference.html
Примеры решения типичных задач за рамками ядра Yii2Paul Klimov
Рассмотрим сравнительно сложные, и в то же время, часто возникающие, задачи, для которых ядро Yii не дает готового решения. Посмотрим как из отдельных моделей ActiveRecord собирать единые сущности, и как разбивать большие модели на составляющие. Разберем как правильно сохранять файлы и как сэкономить на обработчиках событий и поведениях
- Интернационализация сущностей в базе данных;
- Обработка “ролей” в реляционных базах данных;
- Работа с файлами;
- Вложенные модели;
- Trait вместо Behavior.
Организация работы с API на Vue.js, Виталий КопачёвMail.ru Group
В процессе работы из проекта в проект я тащу свой «велосипед», постоянного его подтачиваю или модифицирую под конкретные нужды. Хотел бы рассказать о нем, его плюсах и минусах. Кроме этого, поговорим о том, какие «велосипеды» для работы с API существуют.
В докладе расcказывается о сущностях в Drupal 7, какие это дает преимущества разработчику а также освещаются некоторые удобные методы для работы с сущностями в Drupal.
Автор: Дмитрий Сторожук
http://Itech4web.com
Миша Рудрастых: Введение в HTTP API WordPressRuslan Begaliev
Всё чаще и чаще в реальной жизни нам приходится взаимодействовать со сторонними сервисами через API — от получения количества лайков до подключения к платёжным шлюзам, а значит мы не можем игнорировать встроенный в WordPress механизм, предназначенный специально для этого.
MVVM в WinForms – DevExpress Way (теория и практика)GoSharp
Из доклада вы узнаете о применении популярного паттерна MVVM для упрощения и ускорения процесса разработки desktop-приложений.
Будут рассмотрены общие проблемы этого паттерна и решения которые мы предлагаем в нашем кроссплатформенном MVVM фреймворке. Упор будет сделан на практические аспекты и техники в условиях использования платформы WinForms и контролов от DevExpress.
Примеры решения типичных задач за рамками ядра Yii2Paul Klimov
Рассмотрим сравнительно сложные, и в то же время, часто возникающие, задачи, для которых ядро Yii не дает готового решения. Посмотрим как из отдельных моделей ActiveRecord собирать единые сущности, и как разбивать большие модели на составляющие. Разберем как правильно сохранять файлы и как сэкономить на обработчиках событий и поведениях
- Интернационализация сущностей в базе данных;
- Обработка “ролей” в реляционных базах данных;
- Работа с файлами;
- Вложенные модели;
- Trait вместо Behavior.
Организация работы с API на Vue.js, Виталий КопачёвMail.ru Group
В процессе работы из проекта в проект я тащу свой «велосипед», постоянного его подтачиваю или модифицирую под конкретные нужды. Хотел бы рассказать о нем, его плюсах и минусах. Кроме этого, поговорим о том, какие «велосипеды» для работы с API существуют.
В докладе расcказывается о сущностях в Drupal 7, какие это дает преимущества разработчику а также освещаются некоторые удобные методы для работы с сущностями в Drupal.
Автор: Дмитрий Сторожук
http://Itech4web.com
Миша Рудрастых: Введение в HTTP API WordPressRuslan Begaliev
Всё чаще и чаще в реальной жизни нам приходится взаимодействовать со сторонними сервисами через API — от получения количества лайков до подключения к платёжным шлюзам, а значит мы не можем игнорировать встроенный в WordPress механизм, предназначенный специально для этого.
MVVM в WinForms – DevExpress Way (теория и практика)GoSharp
Из доклада вы узнаете о применении популярного паттерна MVVM для упрощения и ускорения процесса разработки desktop-приложений.
Будут рассмотрены общие проблемы этого паттерна и решения которые мы предлагаем в нашем кроссплатформенном MVVM фреймворке. Упор будет сделан на практические аспекты и техники в условиях использования платформы WinForms и контролов от DevExpress.
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
O objetivo da palestra é explicar como compreender os principios básicos de construção de aplicativos em php, e mostrar como é rápido o desenvolvimento com este framework.
Apresentação para iniciantes no Framework Yii...
Os slides mostram do que se trata esse framework, dos passos necessários para a sua instalação e das facilidades que ele proporciona à implementação (login, CRUD, JSON).
Sample code available at: https://github.com/alvarosanchez/grails-angular-springsecurity-gr8days-warsaw
Grails 3.1 enhances and improves the profile system introduced in Grails 3.0. One of the new profiles ease the creation and development of applications where the the front-end is an Angular JS application, and the backend is a Grails REST API.
In this session, Álvaro (member of the Grails team at OCI, Grails committer and author of several plugins) will demonstrate how to use the Angular profile to create an application using Grails 3.1, Angular JS and Spring Security REST.
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Dev_Party
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — проблемы и решения.
Конференция Dev Party (http://devparty.ru).
Вологда, 02.04.2016.
Вёрстка WordPress тем - WP Kharkiv Meetup #1dima_kuzovlev
Из чего состоит тема? Зачем нужна дочерняя тема? Что такое иерархия шаблонов? Какие есть тонкости подключения CSS & JS? Для чего не стоит использовать functions.php?
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
Сергей Коржнев
Архитектор версии 1.4 2ГИС Web API
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Тезисы:
● Как организован код в старой версии.
● Вдумчиво смотрим, как мы используем Yii, хватаемся за голову и клавиатуру. Там отрезаем, тут пришиваем, и вуаля!
● Ну и делаем выводы, как мы забороли две классические проблемы программирования: борьба с дублированием кода и сложностью системы.
Пластилиновый код: как перестать кодить и начать житьMoscow.pm
Елена Шишкина, ведущий программист Деньги Mail.Ru. Она покажет практический пример лени как двигателя прогресса в отдельно взятом веб-проекте:
- Надоело писать код? Будем думать, как его не писать!
- Боремся с однотипным кодом. Боремся с неоднотипным кодом.
- Код, которого не существует, и код, который существует.
- Следите за руками: программируем на конфигах!
- Как жить дальше?
Гуманитарные специальности в IT-индустрии
Анна Астахова, старший аккаунт-менеджер в компании Nоveо.
Noveo — международная IT‑компания. Наши главные офисы разработки ПО находятся в Новосибирске и Санкт-Петербурге, представительства — в Москве, Париже, Лондоне и Сиэтле.
2. Почему Yii2
- Free, OpenSource
- Постоянно развивающийся
- Общирное сообщество
- Оптимизированная производительность
- Гибкий. Хорошо настраиваемый
- Подходит для решения любых задач
- Включает множество необходимых инструментов
- Большое количество модулей
5. Жизненный цикл запроса
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/../config/web.php');
(new yiiwebApplication($config))->run();
6. Composer. Установка шаблона.
Composer - это пакетный менеджер уровня приложений для языка
программирования PHP, который предоставляет средства по управлению
зависимостями в PHP-приложении.
https://getcomposer.org
composer global require "fxp/composer-asset-plugin:~1.1.1"
composer create-project yiisoft/yii2-app-advanced advanced 2.0.8
7. Автозагрузка классов
Каждый класс должен принадлежать пространству имен (т.е. basemodels).
Каждый класс должен находиться в отдельном файле, путь к которому
определяется правилом:
$classFile = Yii::getAlias('@' . str_replace('', '/', $className) . '.php');
8. Конфигурация приложения
Файлы конфигурации находяться в /config/*.php (для basic приложения).
Основные элементы конфигурации :
user - класс аутентификации в системе;
mailer - отправка почты;
db - подключение к базе данных;
urlManager - роутинг;
cache - класс кеша;
errorHandler - стандартный обработчик ошибок;
session - компонент сессий.
15. Валидация
public function rules()
{
return [
[['name'], 'required'],
[['description'], 'string'],
[['name'], 'string', 'max' => 255],
];
}
['username', 'required', 'message' => 'Please choose a username.'],
['country', 'validateCountry'],
…
public function validateCountry($attribute, $params) {
...
}
16. DAO. Транзакции
$result = Yii::$app->db->createCommand('SELECT * FROM category')->queryAll();
Yii::$app->db->createCommand('UPDATE category SET name = :name WHERE description IS NOT NULL')
->bindValues([':name' => 'fakeCategory'])
->execute();
Yii::$app->db->transaction(function($db) {
...
});
$transaction = Yii::$app->db->beginTransaction();
try {
...
$transaction->commit();
} catch(Exception $e) {
$transaction->rollBack();
}
17. $query = (new yiidbQuery())
->select(['id', 'name'])
->from('category')
->where('description IS NOT NULL')
->limit(2);
print_r($query->all());
18. ActiveRecord
class Category extends yiidbActiveRecord
{
public static function tableName()
{
return 'category';
}
public function rules()
{
return [
[['name'], 'required'],
[['description'], 'string'],
[['name'], 'string', 'max' => 255],
];
}
...
19. $category = new Category;
$category->name = 'Test category';
$category->description = 'Hello world';
$category->save();
$category->name = 'test category1';
$category->save();
$category = Category::find(['name' => 'test category1'])->one();
echo $category->description;
public function beforeSave($insert)
{
$this->name .= ' test category';
return parent::beforeSave($insert);
}
20. Введение в поведения
Поведения - “реализация множественного наследования в Yii2”.
use yiibehaviorsTimestampBehavior;
class Category extends yiidbActiveRecord
{
public function behaviors()
{
return [
TimestampBehavior::className(),
];
}
...
}
28. События
События - это механизм, внедряющий элементы собственного кода в
существующий код в определенные моменты его исполнения.
class Product extends Component
{
const EVENT_EXPORT_TO_XML = 'export_to_xml';
public function export()
{
$this->trigger(self::EVENT_EXPORT_TO_XML);
}
}
29. $product = new Product();
$product->on(Product::EVENT_EXPORT_TO_XML, 'printProduct', 'XML');
function printProduct($event) {
echo $event->data;
}
$product->off(Product::EVENT_EXPORT_TO_XML, 'printProduct');
30. Модули
Модули - это законченные программные блоки, состоящие из моделей,
представлений, контроллеров и других вспомогательных компонентов.
namespace appmodulesforum;
class Forum extends yiibaseModule
{
public $controllerNamespace = 'appmodulesforumcontrollers';
public function init()
{
parent::init();
}
}