Yii 1.1.8

Yii 1.1.8 PHP рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рд╡рд┐рдореЛрдЪрди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 80 рд╕реЗ рдЕрдзрд┐рдХ рдмрдЧ рдлрд┐рдХреНрд╕, рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рд╕реБрдзрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдмрдЧ рдХреА рд╕реВрдЪрдирд╛ рджреА, рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдФрд░ рдЗрд░рд╛рджрд╛ рдХреЗ рд░реВрдк рдореЗрдВ yiiframework.ru рдкрд░ рдСрд░реНрдлрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред

рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдПрдХ рддрд╛рдЬрд╛ рд╡рд┐рддрд░рдг рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред

UPGRADE рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдирд┐рд░реНрджреЗрд╢ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, CHANGELOG рдореЗрдВ рдкрдврд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рджреЗрдЦреЗрдВрдЧреЗред



рдХрд╕реНрдЯрдо URL рдирд┐рдпрдо рдХрдХреНрд╖рд╛рдПрдВ



URL рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдЬреЛ рдорд╛рдирдХ CUrlRule рд╡рд░реНрдЧ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм URL рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдореМрдЬреВрдж рдореВрд▓реНрдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ), рдЖрдк URL рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЦреБрдж рдХреА рдХрдХреНрд╖рд╛рдПрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ CUrlManager рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 array( //   '/login' тЖТ 'site/login'  .. '<action:(login|logout|about)>' => 'site/<action>', //    '//' array( 'class' => 'application.components.CarUrlRule', 'connectionID' => 'db', ), //    'post/update' '<controller:\w+>/<action:\w+>' => '<controller>/<action>', ), 


рд╡рд░реНрдЧ рдЦреБрдж CBaseUrlRule рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 class CarUrlRule extends CBaseUrlRule { public $connectionID = 'db'; public function createUrl($manager,$route,$params,$ampersand) { if ($route==='car/index') { if (isset($params['manufacturer'], $params['model'])) return $params['manufacturer'] . '/' . $params['model']; else if (isset($params['manufacturer'])) return $params['manufacturer']; } return false; //    } public function parseUrl($manager,$request,$pathInfo,$rawPathInfo) { if (preg_match('%^(\w+)(/(\w+))?$%', $pathInfo, $matches)) { //   $matches[1]  $matches[3]  //     ? //  ,  $_GET['manufacturer'] / $_GET['model'] //   'car/index' } return false; //    } } 


рдмреЗрд╣рддрд░ рдХреНрд▓рд╛рд╕ рдСрдЯреЛрд▓реИрдбрд░



Yii рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдХреНрд▓рд╛рд╕ рд▓реЛрдбрд░ рд╣реИ рдЬреЛ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЕрдм рдпрд╣ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдмреВрдЯрд▓реЛрдбрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рджреЛрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдСрдЯреЛрд▓реЙрдЬрд░реНрд╕ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг Yii рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЙрд▓ рдХрд┐рдП рдЧрдП рдереЗ:

 //        Yii Yii::registerAutoloader($autoloader); 


рдЕрдм рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 //   true        Yii Yii::registerAutoloader($autoloader, true); 


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, Yii рдСрдЯреЛрд▓реИрдбрд░ PHP рд╢рд╛рдорд┐рд▓ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдереЛрдбрд╝рд╛-рд╕рд╛ рдПрдбрдЬрд╕реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ index.php рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 require('path/to/yii.php'); //  PHP include path Yii::$enableIncludePath = false; Yii::createWebApplication($config)->run(); 


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд▓реЙрдЧрд┐рдВрдЧ



рдХреБрдЫ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдХреЛ рддреБрд░рдВрдд рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рди рдХрд░реЗрдВ:

 //       Yii::getLogger()->autoFlush = 1; //       Yii::getLogger()->autoDump = true; 


рд╣рдо рдПрдЖрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ



рдореМрдЬреВрджрд╛ CActiveRecord::updateCounters() рд╕рдорд╛рди CActiveRecord рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдирдпрд╛ saveCounters() рд╡рд┐рдзрд┐ рджрд┐рдЦрд╛рдИ рджреА рд╣реИред рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ saveCounters() рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдмрдХрд┐ updateCounters() рд╕рдВрдкреВрд░реНрдг рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

 $post = Post::model()->findByPk(1); //     $post->saveCounters(array('views'=>1)); //      Post::model()->updateCounters(array('views'=>1), 'id=1'); 


рдЕрдиреБрд╡рд╛рдж рдлрд╝рд╛рдЗрд▓ рдкреАрдврд╝реА



yiic message рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ yiic message рдЕрдХреНрд╕рд░ рдкреБрд░рд╛рдиреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдирд╛ yiic message рдерд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рдирдП рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛, рдЬреЛ рдкрд╛рд╕ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реБрдЖ рдерд╛ред рдЕрдм рдЖрдк рдкреБрд░рд╛рдиреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рддреБрд░рдВрдд рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдХрдорд╛рдВрдб рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреЛ true рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП overwrite рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ URL рдмрдирд╛рдирд╛



рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдорддреМрд░ рдкрд░ URL рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП CUrlManager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╣рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдерд╛ред рдЕрдм, рджреЛрдиреЛрдВ рд╡реЗрдм рдФрд░ рдХрдВрд╕реЛрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдЖрдк Yii::app()->createUrl() рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдЗрдЯрдореИрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди URL рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред

рдХреНрд▓рд┐рдк рдЕрдм рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ



рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рджреЗрдЦрдиреЗ рдореЗрдВ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдХрдИ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ:

 <?php //  clip ?> <?php $this->beginClip('hello')?> <p>, {username}!</p> <?php $this->endClip() ?> <?php //  clip ?> <?php $this->renderClip('hello',array( '{username}'=>'Qiang', ))?> <?php $this->renderClip('hello',array( '{username}'=>'Alex', ))?> <?php $this->renderClip('hello',array( '{username}'=>'Michael', ))?> 

Source: https://habr.com/ru/post/In122770/


All Articles