рд╢реБрдн рджрд┐рди, рдкреНрд░рднрд╛рдордВрдбрд▓!
рд╕рдорд╕реНрдпрд╛
рдЬрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдпрд╛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рд╕реБрд▓рдн рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЦрддрд░рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд╡рд╣ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ ActiveRecord рдореЙрдбрд▓, рдПрдХреНрд╕рдкреЗрдВрд╕ рдФрд░ рдпрд╣ рдХреЛрдб рд╣реИ:
$modelOne = Expence::model()->findByPk(10); $modelTwo = Expence::model()->findByPk(10); var_dump($modelOne === $modelTwo);
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдореЙрдбрд▓ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП, рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рджреВрд╕рд░реЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ (рдЬреЛ рдХрд┐ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ)ред
$modelOne->someField = "Data"; $modelOne->save();
рдирд┐рд░реНрдгрдп
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рд░реНрдЯрд┐рди рдлрд╛рдЙрд▓рд░
рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА рдореИрдк рдирд╛рдордХ рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдЙрдирдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдПрдХ рд╣реА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рд╣рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ 5 рдХреА рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбрд▓ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓реЗрдЧрд╛ред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, Yii рдореЙрдирд┐рдЯрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
<?php class ObjectWatcher { private static $_instance; private $objects = array(); static function getInstance(){ if(!isset(self::$_instance)){ self::$_instance = new ObjectWatcher; } return self::$_instance; } static function getRecord($className, $id) { $inst = self::getInstance(); $key = "$className.$id"; if(isset($inst->objects[$key])){ return $inst->objects[$key]; } return null; } static function addRecord($obj, $id) { $inst = self::getInstance(); $inst->objects[$inst->getKey($obj, $id)] = $obj; } function getKey($obj, $id){ return get_class($obj).'.'.$id; } }
AddRecord рдФрд░ getRecord рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдореЙрдбрд▓ рдХреА рдПрдХ рдЕрдЬреАрдмреЛрдЧрд░реАрдм рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдПрдХ рдореЙрдбрд▓ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ (рдЬреЛ рдХрд┐ "class_name.id" => рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдПрдХ рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгреА рд╣реИ)ред
рдЕрдм рдЖрдкрдХреЛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Yii рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдЕрднреА рддрдХ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдпрд╛ $ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд░рдгреА рд╕реЗ рдореМрдЬреВрджрд╛ рдПрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рдо Yii рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рдмрд┐рдирд╛ CActiveRecord рдХреЗ рдмрд╛рдж рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЗрдпрд░ рдмрдирд╛рдПрдВрдЧреЗред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдПрдХреНрд╕рдкреЗрдВрд╕ :: рдореЙрдбрд▓ () -> findByPk (10) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд┐рдП рдмрд┐рдирд╛ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди Yii рдореЗрдВ рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рд╡реНрдпрд╡рд╕реНрдерд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рдВ, CActiveRecord :: рдкрд╣рд▓реЗFFind () рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ findByPk () рдХреЗ рдмрд╛рдж, рдЗрд╕рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред CActiveRecord :: рддрддреНрдХрд╛рд▓ () рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред
<?php class Expence extends CActiveRecord {
рдЕрдм рдмрд╕ рдЗрддрдирд╛ рд╣реА
$modelOne = Expence::model()->findByPk(10); $modelTwo = Expence::model()->findByPk(10); var_dump($modelOne === $modelTwo);
рд╕рдВрджрд░реНрдн: