PHP рдХреЗ рд▓рд┐рдП рдЙрдореНрдореАрджрд╡рд╛рд░ Yii 1.1.14 рдЬрд╛рд░реА рдХрд┐рдпрд╛ред рдЖрдк рдЗрд╕реЗ
GitHub рдХреЗ рд╕рд╛рде рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред
80 рд╕реЗ рдЕрдзрд┐рдХ рдмрдЧ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛, 60 рд╕реЗ рдЕрдзрд┐рдХ рдЫреЛрдЯреЗ рд╕реБрдзрд╛рд░ рдФрд░ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝реА рдЧрдИрдВред рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдкреНрд░рдХрдЯ рд╣реБрдЖ рд╣реИред
CPasswordHelper
, рдЬреЛ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢ рдХреЗ рднрдВрдбрд╛рд░рдг рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛
CRedisCache
рдЬреЛрдбрд╝рд╛
CRedisCache
,
рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХреИрд╢ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдбрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Yii рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╕рдВрдЧреАрддрдХрд╛рд░ рдкреИрдХреЗрдЬ ред рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИред
рдЪреИрдВрдЬ рдореЗрдВ ред
рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
рдХреНрд░реЗрдУрдХреЛрдбрд░ , рдЯреЙрдо--, рдкреЗрд╕реНрдЯреА, рд░рдЬреНрдЬреЛ, рдПрдВрдЯреЛрдирдХреНрдпреВ, рдпрд┐рд╡рд┐рдЧреЗрдиреА рдФрд░ рдЕрдиреНрдп,
рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
рдЪреВрдВрдХрд┐ рдпрд╣ рд░рд┐рд▓реАрдЬрд╝ (рдЖрд░рд╕реА) рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдпреБрджреНрдз рд╕рд░реНрд╡рд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдерд┐рд░ рд░рд┐рд▓реАрдЬ 1.1.14 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛
рдХрдИ рд╣рдлреНрддреЛрдВ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк
RC рдФрд░
рдЖрдЗрдП рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ ред рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рджред
рдЦреИрд░, рдЕрдм рдореБрдЦреНрдп рд╕реБрдзрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдиреНрдпреВ CPasswordHelper
рдХреНрд▓рд╛рд╕
CPasswordHelper
рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢ рдХреЗ рднрдВрдбрд╛рд░рдг рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
New CDbCommandBuilder::createMultipleInsertCommand()
рд╡рд┐рдзрд┐
CDbCommandBuilder::createMultipleInsertCommand()
рдХрд╛ рдЙрдкрдпреЛрдЧ
CDbCommandBuilder::createMultipleInsertCommand()
рдХреНрд░рдо рдореЗрдВ рдХрдИ рд░рд┐рдХреЙрд░реНрдб рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛:
$builder=Yii::app()->db->schema->commandBuilder; $command=$builder->createMultipleInsertCommand('tbl_post', array( array('title' => 'record 1', 'text' => 'text1'), array('title' => 'record 2', 'text' => 'text2'), )); $command->execute();
CRedisCache
рдЕрдм Redis рдореЗрдВ рдХреИрд╢ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ `рд╕рдВрд░рдХреНрд╖рд┐рдд / config / main.php` рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
array(
Yii рдЕрдм
рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛрдбрд╝реЗрдВ
composer.json
рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рддред
composer.json
ред
"yiisoft/yii": "dev-master"
рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ
рдпрджрд┐ рдЖрдкрдХреЛ рдЙрд╕рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрдбрд╝рд╛рдИ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдордп рдХреЗ рдмрд╛рдж рд▓реЙрдЧ рдЖрдЙрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрд░реЗрдВ
рдпрд╣ рд╕рдВрднрд╡ рд╣реИ:
рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рд╕рдорд░реНрдерди рдХреЛ рдмрджрд▓реЗрдВ
CHttpRequest::sendFile
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ
CHttpRequest::sendFile
Yii рдЕрдм RANGE рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╕рд╣реА рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдХрдИ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдЕрдзрд┐рдХ рдЧрддрд┐ рдорд┐рд▓рддреА рд╣реИред
BELONGS_TO
рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЕрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ
CActiveRecord::BELONGS_TO
рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ
рдПрдХ рдкреВрд░реА рдЧрд╛рдЗрдб рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ ред
рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЪрдпрдирд╛рддреНрдордХ рд▓реЙрдЧрд┐рдВрдЧ
CLogFilter::$logVars
рдЕрдм рд╕рд░рдгреА рдХрд╛ рдПрдХ рд╕рд░рдгреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐
$GLOBALS
рд▓реЙрдЧ рд╕реЗ рдХреНрдпрд╛ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ:
'components'=>array( 'log'=>array( 'class'=>'CLogRouter', 'routes'=>array( array( 'class'=>'system.logging.CWebLogRoute', 'filter'=>array( 'class'=>'system.logging.CLogFilter', 'logVars'=>array( '_COOKIE',
рдЙрдкрд░реЛрдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓реЙрдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЧрд╛:
$_COOKIE=array ( '__utma' => '111872281.473431406.1366046648.1366046648.1366046648.1', '__utmz' => '111872281.1366046648.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)', 'cartVisible' => '1', '96ab4aec0c2977c9b793d4ba009eb3ce' => '...', 'PHPSESSID' => 'vb8pk7obs3q2lc7bl8ield7si7', ) $_SERVER.REMOTE_ADDR='::1' $_SERVER.HTTP_USER_AGENT='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0'
рдирдИ CLocalizedFormatter
рдирдпрд╛
CLocalizedFormatter
рд╡рд░реНрдЧ
CLocalizedFormatter
рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
'components'=>array( 'format'=>array( 'class'=>'system.utils.CLocalizedFormatter', 'locale'=>'en_US', ), 'germanFormat'=>array( 'class'=>'system.utils.CLocalizedFormatter', 'locale'=>'de_DE', ), 'russianFormat'=>array( 'class'=>'system.utils.CLocalizedFormatter', 'locale'=>'ru_RU', ), ),
echo Yii::app()->format->formatDatetime(time()) . "\n"; echo Yii::app()->germanFormat->formatDatetime(time()) . "\n"; echo Yii::app()->russianFormat->formatDatetime(time()) . "\n";
рдбреЗрдЯрд╛рдмреЗрд╕ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдлрд╝реАрд▓реНрдб рдирд╛рдо рдмрдирд╛рдирд╛
Gii рдЕрдм рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдХреЗ рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЗрдмрд▓ рдлрд╝реАрд▓реНрдб рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИ:
CREATE TABLE `tbl_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(100) NOT NULL COMMENT ':', `last_name` varchar(100) NOT NULL COMMENT 'Nachname:', `title` varchar(50) NOT NULL COMMENT 'Title (eg Mr., Mrs., etc.):', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1;
рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ
attributeLabels
рд╡рд┐рдзрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА (рдпрджрд┐ рдЖрдк Gii рдореЗрдВ "рд▓реЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ" рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ):
public function attributeLabels() { return array( 'id' => 'ID', 'first_name' => ':', 'last_name' => 'Nachname:', 'title' => 'Title (eg Mr., Mrs., etc.):', ); }
CSecurityManager
рдореЗрдВ рдирдП рддрд░реАрдХреЗ
CSecurityManager
рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:
*
CSecurityManager::generateSessionRandomBlock()
: рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред
*
CSecurityManager::generatePseudoRandomBlock()
:
mt_rand()
рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдкред
*
CSecurityManager::generateRandomBytes()
: рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╕реНрдерд┐рд░рддрд╛ рджреВрд╕рд░реА рд╕реЗрдЯ рдХреА рдЧрдИ рд╣реИ
рдПрдХ рддрд░реНрдХред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреАрдврд╝реА рдмрд▓реНрдХрд┐ рдзреАрдореА рд╣реИред
*
CSecurityManager::generateRandomString()
: рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рддрд╛рдХрдд рджреВрд╕рд░реЗ рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рджреА рдЧрдИ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреАрдврд╝реА рдмрд▓реНрдХрд┐ рдзреАрдореА рд╣реИред