Рабочие листы
к вашим урокам
Скачать
1 слайд
Разработка на Yii
QuartSoft Corp.
Системный архитектор
Климов П.В.
2 слайд
Yii – PHP Framework
ООП
Модульность
Простота
Высокое быстродействие
Основные характеристики:
3 слайд
Prado
Ruby on Rails
jQuery
Symfony
Joomla
Истоки Yii:
4 слайд
Магия в PHP
class Component {
public $publicProperty;
protected $_protectedProperty;
public function setProtectedProperty($value) {
$this->_protectedProperty = $value;
return true;
}
public function getProtectedProperty() {
return $this->_protectedProperty;
}
}
5 слайд
class Component {
public function __get($propertyName) {
$methodName = 'get'.$propertyName;
if (method_exists($this, $methodName)) {
return call_user_func( array($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( array($this, $methodName), $value );
} else {
throw new Exception("Missing property {$propertyName}'!");
}
}
6 слайд
$component = new Component();
$component->publicProperty = 'Public value';
echo($component->publicProperty);
$component->protectedProperty = 'Protected value';
echo($component->protectedProperty);
7 слайд
Автозагрузка классов
require_once('components/SomeClass.php');
$someObj = new SomeClass();
…
require_once('components/OtherClass.php');
$otherObj = new OtherClass();
…
require_once('components/SomeClass.php');
$anotherSomeObj = new SomeClass();
Подключение файлов по принципу DLL:
8 слайд
class Autoloader {
public function autoload($className) {
$classFileName = ‘components/'.$className.'.php';
if (file_exists($classFileName)) {
require_once($classFileName);
return true;
}
return false;
}
public function register() {
return spl_autoload_register( array($this, 'autoload') );
}
public function __construct() {
$this->register();
}
}
9 слайд
Автозагрузка классов в контексте Yii:
Yii::import(‘application.components.SomeClass');
Yii::import(‘application.components.OtherClass');
…
$someObj = new SomeClass();
‘SomeComponent’ => ‘/home/www/…/components/SomeClass.php’,
‘OtherComponent’ => ‘/home/www/…/components/OtherClass.php’,
«Карта» автозагрузки классов:
10 слайд
Порождение компонентов
function createComponent(array $componentConfig) {
$className = $componentConfig['class'];
if (empty($className)) {
throw new Exception(‘Missing parameter "class"!');
}
unset($componentConfig['class']);
if (!class_exists($className)) {
Yii::import($className); // Автозагрузка
}
$component = new $className();
foreach($componentConfig as $name=>$value) {
$component->$name = $value; // Конфигурация
}
return $component;
}
11 слайд
$componentConfig = array(
'class'=>'CUrlManager',
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'/'=>'site/index',
'<controller:\w+>/<id:\d+>*'=>'<controller>/view',
),
);
$component = createComponent($componentConfig);
Задание любого объекта через массив:
12 слайд
Фабрика компонентов
Component
Factory
$componentsConfig
$components
*
1
“Create and store by name”
ComponentA
ComponentB
Client
createComponent()
getComponent()
“Request component by name”
…
13 слайд
Одиночка (Singleton)
class Singleton {
private static $_selfInstance = null;
public static function getInstance() {
if (!is_object(self::$_selfInstance)) {
self::$_selfInstance = new Singleton();
}
return self::$_selfInstance;
}
private function __construct() {
// закрытый конструктор
}
}
$singleton = Singleton::getInstance();
14 слайд
Фабрика компонентов(Component Factory)
+
Одиночка (Singleton)
=
Приложение Yii (Yii Application)
15 слайд
$config = array(
'name'=>'My Web Application',
…
'components'=>array(
'user'=>array(
'allowAutoLogin'=>true,
),
…
),
);
Yii::createWebApplication($config)->run();
…
$application = Yii::app();
$user = Yii::app()->getComponent(‘user’);
16 слайд
MVC в Yii
Controller
Widget
Model
View
Application
Application Components
17 слайд
Маршрутизация web запроса
:Application
:Request
:UrlManager
:Controller
Apache
‘run’
‘get request’
‘get route by request’
‘controller/action’
‘run action’
‘output’
‘request’
18 слайд
Доступ к базе данных через PDO
PDO
Client
PDO Driver
PDO MySQL
PDO PostgreSQL
…
1
1
MySQL
PostgreSQL
19 слайд
Абстракция базы данных
PDO
Client
1
DbConnection
DbSchema
Schema MySQL
Schema PostgreSQL
1
…
DbCommand
“Control information”
1
1
“Compose and execute queries”
*
1
20 слайд
Active Record
ActiveRecord
ActiveFinder
insert()
update()
delete()
find()
populateRecord()
Client
DbCommand
“Find self instances”
“Instantiate by query result”
“Database access”
“Database access”
1
*
*
1
1
1
*
*
21 слайд
$allUsers = User::model()->findAll();
$newUser = new User();
$newUser->name = ‘new user’;
$newUser->save();
$existingUser = User::model()->findByName(‘testuser’);
$existingUser->email = ‘newemail@domain.com’;
$existingUser->save();
22 слайд
События (Events) в Yii
Component
raiseEvent()
eventHandlers
Event
sender
data
Handler
*
*
1
1
1
*
“Raise”
“Handle”
“List of PHP callbacks”
PHP Callback
23 слайд
function handleBeforeSave(CEvent $event) {
$sender = $event->sender;
// Изменяем состояние отправителя события:
$sender->create_date = date('Y-m-d H:i:s', strtotime('NOW'));
}
$user = new User();
// Назначаем обработчик события:
$user->onBeforeSave = ‘handleBeforeSave’;
$user->name = ‘test name’;
$user->save();
echo $user->create_date; // Вывод: ‘2012-03-22 16:42’
24 слайд
Проблема множественного наследования
ActiveRecord
ArPosition
Save custom records display order
ArFile
Bind physical file with the db record
ArPositionFile
Position + File
25 слайд
Поведение (Behavior)
Component
__call()
attachBehavior()
behaviors
Behavior
getOwner()
events()
owner
1
*
Event
data
1
1
*
*
“Raise”
“Handle”
26 слайд
class ArBehaviorExample extends CBehavior {
public function behaviorMethod() {
$owner = $this->getOwner();
$owner->create_date = date('Y-m-d H:i:s', strtotime('NOW'));
}
}
$user = new User();
// Добавляем поведение:
$behavior = new ArBehaviorExample();
$user->attachBehavior($behavior);
// Вызываем метод поведения:
$user->behaviorMethod();
echo $user->create_date; // Вывод: ‘2012-03-22 16:46’
27 слайд
Yii
Динамический код
Компонентная структура
Приложение = «одиночка» + «фабрика»
Отложенная загрузка и создание объектов
MVC
«PDO» и «Active Record»
События
Поведения
Рабочие листы
к вашим урокам
Скачать
6 625 839 материалов в базе
Настоящий материал опубликован пользователем Николина Виктория Анатольевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт
Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.
Удалить материалВаша скидка на курсы
40%Курс профессиональной переподготовки
500/1000 ч.
Курс профессиональной переподготовки
300/600 ч.
Курс профессиональной переподготовки
300/600 ч.
Курс повышения квалификации
72/180 ч.
Мини-курс
4 ч.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.