🗊Презентация Общая архитектура Yii2

Нажмите для полного просмотра!
Общая архитектура Yii2, слайд №1Общая архитектура Yii2, слайд №2Общая архитектура Yii2, слайд №3Общая архитектура Yii2, слайд №4Общая архитектура Yii2, слайд №5Общая архитектура Yii2, слайд №6Общая архитектура Yii2, слайд №7Общая архитектура Yii2, слайд №8Общая архитектура Yii2, слайд №9Общая архитектура Yii2, слайд №10Общая архитектура Yii2, слайд №11Общая архитектура Yii2, слайд №12Общая архитектура Yii2, слайд №13Общая архитектура Yii2, слайд №14Общая архитектура Yii2, слайд №15Общая архитектура Yii2, слайд №16Общая архитектура Yii2, слайд №17Общая архитектура Yii2, слайд №18Общая архитектура Yii2, слайд №19Общая архитектура Yii2, слайд №20Общая архитектура Yii2, слайд №21Общая архитектура Yii2, слайд №22Общая архитектура Yii2, слайд №23Общая архитектура Yii2, слайд №24Общая архитектура Yii2, слайд №25Общая архитектура Yii2, слайд №26Общая архитектура Yii2, слайд №27Общая архитектура Yii2, слайд №28Общая архитектура Yii2, слайд №29Общая архитектура Yii2, слайд №30Общая архитектура Yii2, слайд №31Общая архитектура Yii2, слайд №32Общая архитектура Yii2, слайд №33Общая архитектура Yii2, слайд №34Общая архитектура Yii2, слайд №35Общая архитектура Yii2, слайд №36Общая архитектура Yii2, слайд №37Общая архитектура Yii2, слайд №38Общая архитектура Yii2, слайд №39Общая архитектура Yii2, слайд №40Общая архитектура Yii2, слайд №41

Содержание

Вы можете ознакомиться и скачать презентацию на тему Общая архитектура Yii2. Доклад-сообщение содержит 41 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Общая 
архитектура
Yii2
YiiSoft
Описание слайда:
Общая архитектура Yii2 YiiSoft

Слайд 2





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

Слайд 3





Основные характеристики
Основные характеристики
Описание слайда:
Основные характеристики Основные характеристики

Слайд 4





Управление зависимостями
Описание слайда:
Управление зависимостями

Слайд 5





Автозагрузка классов
// Autoload via Composer by PSR-4 :
$model = new yii\base\Model();
// Yii built-in autoload by PSR via alias:
Yii::setAlias(‘@app’, ‘/var/www/myproject’);
$someObj = new app\models\Customer();
// include ‘/var/www/myproject/models/Customer.php’;
Описание слайда:
Автозагрузка классов // Autoload via Composer by PSR-4 : $model = new yii\base\Model(); // Yii built-in autoload by PSR via alias: Yii::setAlias(‘@app’, ‘/var/www/myproject’); $someObj = new app\models\Customer(); // include ‘/var/www/myproject/models/Customer.php’;

Слайд 6





Магия в PHP
class Object
{
    public $publicProperty;
    private $_privateProperty;
    
    public function setPrivateProperty($value)
    {
        $this->_privateProperty = $value;
    }
    
    public function getPrivateProperty()
    {
        return $this->_privateProperty;
    }
}
Описание слайда:
Магия в PHP class Object { public $publicProperty; private $_privateProperty; public function setPrivateProperty($value) { $this->_privateProperty = $value; } public function getPrivateProperty() { return $this->_privateProperty; } }

Слайд 7





class Object
class Object
{
    public function __get($propertyName)
    {
        $methodName = 'get‘ . $propertyName;
        if (method_exists($this, $methodName)) {
            return call_user_func([$this, $methodName]);
        } else {
            throw new Exception("Missing property {$propertyName}'!");
        }
    }
    
    public function __set($propertyName, $value)
    {
        $methodName = 'set‘ . $propertyName;
        if (method_exists($this, $methodName)) {
            return call_user_func([$this, $methodName], $value);
        } else {
            throw new Exception("Missing property {$propertyName}'!");
        }
    }
Описание слайда:
class Object class Object { public function __get($propertyName) { $methodName = 'get‘ . $propertyName; if (method_exists($this, $methodName)) { return call_user_func([$this, $methodName]); } else { throw new Exception("Missing property {$propertyName}'!"); } } public function __set($propertyName, $value) { $methodName = 'set‘ . $propertyName; if (method_exists($this, $methodName)) { return call_user_func([$this, $methodName], $value); } else { throw new Exception("Missing property {$propertyName}'!"); } }

Слайд 8





$object = new Object();
$object = new Object();
$object ->publicProperty = 'Public value';
echo ($object->publicProperty);
$object->privateProperty = 'Private value';
echo ($object->privateProperty);
Описание слайда:
$object = new Object(); $object = new Object(); $object ->publicProperty = 'Public value'; echo ($object->publicProperty); $object->privateProperty = 'Private value'; echo ($object->privateProperty);

Слайд 9





Порождение объектов
function createObject(array $config)
{
        $className = $config['class'];
        if (empty($className)) {
            throw new Exception(‘Missing parameter "class"!');
        }
        unset($config['class']);
        
        $object = new $className();
        foreach ($config as $name=>$value) {
            $object->$name = $value; // Конфигурация
        }
        return $object;
}
Описание слайда:
Порождение объектов function createObject(array $config) { $className = $config['class']; if (empty($className)) { throw new Exception(‘Missing parameter "class"!'); } unset($config['class']); $object = new $className(); foreach ($config as $name=>$value) { $object->$name = $value; // Конфигурация } return $object; }

Слайд 10





Задание любого объекта через массив:
$config = [
    'class‘ => ‘yii\web\UrlManager',
    'enablePrettyUrl‘ => true,
    'showScriptName‘ => false,
    'rules‘ => [
        '/‘ => 'site/index',
        '<controller:\w+>/<id:\d+>*‘ => '<controller>/view', 
    ],
]; 
$object = Yii::createObject($config);
Описание слайда:
Задание любого объекта через массив: $config = [ 'class‘ => ‘yii\web\UrlManager', 'enablePrettyUrl‘ => true, 'showScriptName‘ => false, 'rules‘ => [ '/‘ => 'site/index', '<controller:\w+>/<id:\d+>*‘ => '<controller>/view', ], ]; $object = Yii::createObject($config);

Слайд 11





Dependency Injection (DI)
Описание слайда:
Dependency Injection (DI)

Слайд 12


Общая архитектура Yii2, слайд №12
Описание слайда:

Слайд 13





$config = [
$config = [
	'name‘ => 'My Web Application',
    …
    'components‘ => [
		'user‘ => [
		        ‘enableAutoLogin‘ => true,
		],
           …
    ],
];
(new yii\web\Application($config))->run();
…
$application = Yii::$app;
$user = Yii::$app->get(‘user’);
Описание слайда:
$config = [ $config = [ 'name‘ => 'My Web Application', … 'components‘ => [ 'user‘ => [ ‘enableAutoLogin‘ => true, ], … ], ]; (new yii\web\Application($config))->run(); … $application = Yii::$app; $user = Yii::$app->get(‘user’);

Слайд 14





MVC в Yii2
Описание слайда:
MVC в Yii2

Слайд 15





Маршрутизация web запроса
Описание слайда:
Маршрутизация web запроса

Слайд 16





Построение отображения
class View extends Component
{
    public function renderFile($viewFile, $data = null)
    {
        require($viewFile);
    }
}
Описание слайда:
Построение отображения class View extends Component { public function renderFile($viewFile, $data = null) { require($viewFile); } }

Слайд 17





Структура отображения
Описание слайда:
Структура отображения

Слайд 18





Виджет (Widget)
<?php echo GridView::widget([
    'dataProvider' => $dataProvider,
    'options' => ['class' => 'detail-grid-view table-responsive'],
    'filterModel' => $searchModel,
    'columns' => [
        'time',
        'level',
        'category',
        'message',
    ],
]); ?>
Описание слайда:
Виджет (Widget) <?php echo GridView::widget([ 'dataProvider' => $dataProvider, 'options' => ['class' => 'detail-grid-view table-responsive'], 'filterModel' => $searchModel, 'columns' => [ 'time', 'level', 'category', 'message', ], ]); ?>

Слайд 19





Asset Management
Описание слайда:
Asset Management

Слайд 20





class YiiAsset extends AssetBundle
class YiiAsset extends AssetBundle
{
    public $sourcePath = '@yii/assets';
    public $js = [
        'yii.js',
    ];
    public $depends = [
        'yii\web\JqueryAsset',
    ];
}
class JqueryAsset extends AssetBundle
{
    public $sourcePath = '@bower/jquery/dist';
    public $js = [
        'jquery.js',
    ];
}
Описание слайда:
class YiiAsset extends AssetBundle class YiiAsset extends AssetBundle { public $sourcePath = '@yii/assets'; public $js = [ 'yii.js', ]; public $depends = [ 'yii\web\JqueryAsset', ]; } class JqueryAsset extends AssetBundle { public $sourcePath = '@bower/jquery/dist'; public $js = [ 'jquery.js', ]; }

Слайд 21





Модель
Описание слайда:
Модель

Слайд 22





Доступ к базе данных через PDO
Описание слайда:
Доступ к базе данных через PDO

Слайд 23





Абстракция базы данных
Описание слайда:
Абстракция базы данных

Слайд 24





Select Query Shortcut
Описание слайда:
Select Query Shortcut

Слайд 25





Active Record
Описание слайда:
Active Record

Слайд 26





// Выборка записей:
// Выборка записей:
$allUsers = User::find()->all();
// Вставка новой записи:
$newUser = new User();
$newUser->name = ‘new user’;
$newUser->save();
// Обновление существующей записи:
$existingUser = User::find()->where([‘name’=>‘testuser’])->one();
$existingUser->email = ‘newemail@domain.com’;
$existingUser->save();
// Отложенная загрузка отношения:
$bio = $existingUser->profile->bio;
// Жадная загрузка отношения:
$allUsers = User::find()->with(‘profile’)->all();
Описание слайда:
// Выборка записей: // Выборка записей: $allUsers = User::find()->all(); // Вставка новой записи: $newUser = new User(); $newUser->name = ‘new user’; $newUser->save(); // Обновление существующей записи: $existingUser = User::find()->where([‘name’=>‘testuser’])->one(); $existingUser->email = ‘newemail@domain.com’; $existingUser->save(); // Отложенная загрузка отношения: $bio = $existingUser->profile->bio; // Жадная загрузка отношения: $allUsers = User::find()->with(‘profile’)->all();

Слайд 27





«Жадная» загрузка отношений
Описание слайда:
«Жадная» загрузка отношений

Слайд 28





NOSQL Active Record
MongoDB
Redis
ElasticSearch
Sphinx
Описание слайда:
NOSQL Active Record MongoDB Redis ElasticSearch Sphinx

Слайд 29





Cross-DBMS отношения
Описание слайда:
Cross-DBMS отношения

Слайд 30





События (Events) в Yii
Описание слайда:
События (Events) в Yii

Слайд 31





Обработка события
Описание слайда:
Обработка события

Слайд 32





function handleBeforeInsert(Event $event)
function handleBeforeInsert(Event $event)
{
    $sender = $event->sender;
    // Изменяем состояние отправителя события:
    $sender->create_date = date('Y-m-d', strtotime('NOW'));
}
$user = new User();
// Назначаем обработчик события:
$user->on(‘beforeInsert’, ‘handleBeforeInsert’);
$user->name = ‘test name’;
$user->save();
echo $user->create_date; // Вывод: ‘2015-03-21’
Описание слайда:
function handleBeforeInsert(Event $event) function handleBeforeInsert(Event $event) { $sender = $event->sender; // Изменяем состояние отправителя события: $sender->create_date = date('Y-m-d', strtotime('NOW')); } $user = new User(); // Назначаем обработчик события: $user->on(‘beforeInsert’, ‘handleBeforeInsert’); $user->name = ‘test name’; $user->save(); echo $user->create_date; // Вывод: ‘2015-03-21’

Слайд 33





Проблема множественного наследования
Описание слайда:
Проблема множественного наследования

Слайд 34





Поведение (Behavior)
Описание слайда:
Поведение (Behavior)

Слайд 35





Расширение интерфейса
class Component
{
    private $_behaviors = [ ];
    public function __call($method, $arguments)
    {
        // Ищем недостающий метод среди поведений:
        foreach ($this->_behaviors as $behavior) {
            if (method_exists($behavior, $method)) {
                return $behavior->$method($arguments);
            }
        }
        throw new Exception(“Missing method {$method}”);
    }
    …
}
Описание слайда:
Расширение интерфейса class Component { private $_behaviors = [ ]; public function __call($method, $arguments) { // Ищем недостающий метод среди поведений: foreach ($this->_behaviors as $behavior) { if (method_exists($behavior, $method)) { return $behavior->$method($arguments); } } throw new Exception(“Missing method {$method}”); } … }

Слайд 36





class ArBehaviorExample extends Behavior
class ArBehaviorExample extends Behavior
{
    public function behaviorMethod()
    {
        $this->owner->create_date = date('Y-m-d', strtotime('NOW'));
    }
}
$user = new User();
// Добавляем поведение:
$behavior = new ArBehaviorExample();
$user->attachBehavior($behavior);
// Вызываем метод поведения:
$user->behaviorMethod();
echo $user->create_date; // Вывод: ‘2015-03-21’
Описание слайда:
class ArBehaviorExample extends Behavior class ArBehaviorExample extends Behavior { public function behaviorMethod() { $this->owner->create_date = date('Y-m-d', strtotime('NOW')); } } $user = new User(); // Добавляем поведение: $behavior = new ArBehaviorExample(); $user->attachBehavior($behavior); // Вызываем метод поведения: $user->behaviorMethod(); echo $user->create_date; // Вывод: ‘2015-03-21’

Слайд 37





Обработка событий
class ExampleBehavior extends Behavior
{
    public function events()
    {
        return [
            ‘beforeInsert’ => ‘handleBeforeInsert’,
            ‘afterInsert’ => ‘handleAfterInsert’
        ];
    }
    public function handleBeforeSave(Event $event)
    {
        // Обработка события «beforeInsert»
    }
    …
}
Описание слайда:
Обработка событий class ExampleBehavior extends Behavior { public function events() { return [ ‘beforeInsert’ => ‘handleBeforeInsert’, ‘afterInsert’ => ‘handleAfterInsert’ ]; } public function handleBeforeSave(Event $event) { // Обработка события «beforeInsert» } … }

Слайд 38





Отправка электронной почты
Описание слайда:
Отправка электронной почты

Слайд 39





Расширение «AuthClient»
Описание слайда:
Расширение «AuthClient»

Слайд 40





Дополнительные расширения
Gii
Debug
Boostrap
JUI
Codeception
Imagine
ApiDoc
Описание слайда:
Дополнительные расширения Gii Debug Boostrap JUI Codeception Imagine ApiDoc

Слайд 41





Yii2
Composer + Bower
Компонентная структура и DI
MVC
Управление «assets»
PDO и Active Record
Описание слайда:
Yii2 Composer + Bower Компонентная структура и DI MVC Управление «assets» PDO и Active Record



Похожие презентации
Mypresentation.ru
Загрузить презентацию