рдЖрдЬ, рдХрдИ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╕реЗрд╡рд╛рдПрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рд▓рдХреНрд╖реНрдп рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдгред рдЪреВрдВрдХрд┐ рдЬрд╛рдирдХрд╛рд░реА рдкреВрд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдмрд┐рдЦрд░реА рд╣реБрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрд╛рдо рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдорд╛рди рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рджреМрд░рд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдПрдХ рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рдирд┐рд╡рд┐рджрд╛ рд╕рд╛рдЗрдЯ рдкрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рд╕рдмрдорд┐рдЯ рдХрд┐рдП рдЧрдП рдЖрд╡реЗрджрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╣ рджреЛрд╣рд░рд╛рд╡ рд╡рд╛рд▓реЗ рдХрд╛рдо рдкрд░ рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реИ: рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдмрдирд╛рдирд╛ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдбреЗрдЯрд╛ рднрд░рдирд╛ - рд╡рд┐рднрд┐рдиреНрди рдлреНрд░реАрд▓рд╛рдВрд╕ рдПрдХреНрд╕рдЪреЗрдВрдЬреЛрдВ рдореЗрдВред рдПрдЧреНрд░реАрдЧреЗрдЯрд░ рд╕рд╛рдЗрдЯреЗрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирдП рдПрдЧреНрд░реАрдЧреЗрдЯрд░-рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╕рднреА рдирдП рдХрд╛рд░реНрдпреЛрдВ, рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рд╕реЗрд╡рд╛ рд╕реЗ рд╕реЗрд╡рд╛ рдореЗрдВ рднрд┐рдиреНрди рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рдРрд╕реА рдЪреАрдЬреЗрдВ рдмрдирд╛рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рд╣реИрдВ: рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реЗ рдкреИрдЯрд░реНрди рд╣реИрдВ рдЬреЛ рдРрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рд╕рд░рд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдПрдХ рд▓рдЪреАрд▓реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдЧреНрд░реАрдЧреЗрдЯрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреЛ рдЖрдкрдХреЛ рдлреНрд░реАрд▓рд╛рдВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд╡рд┐рджрд╛ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдЬреИрд╕реЗ рдУрдбреЗрд╕реНрдХ, рдлреНрд░реАрд▓рд╛рдВрд╕рд░, рдПрд▓рд╛рдВрд╕ рдФрд░ рдЕрдиреНрдпред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдордирд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ:
- рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рд┐рджреНрдзрд╛рдВрдд: рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рдорд╛рдирд╡ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╣реБрдП рдмреЙрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
- рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╡рд┐рд╖рдорддрд╛ - рдХреБрдЫ рд░рд┐рдЯрд░реНрди рдЬреЛрдВрд╕, рдЕрдиреНрдп рдПрдХреНрд╕рдПрдордПрд▓ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рдПрдХ рд╡реЗрдм рдкреЗрдЬ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред
- 2 рд╕реЗ рдЙрдкрдЬреА - рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд╕реНрддреБ рдХреА рд╕рдВрд░рдЪрдирд╛
рд╕реА рдлреНрд░реАрд▓рд╛рдВрд╕рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
<?xml version="1.0" encoding="UTF-8"?> <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1"> <id>588582</id> <name>sign design web software</name> <url>http://www.sandbox.freelancer.com/projects/PHP-ASP/sign-design-web-software.html</url> <buyer> <url>http://www.sandbox.freelancer.com/users/1353095.html</url> <id>1353095</id> <username>billk89</username> </buyer> <short_descr>Create and upload sign design web software for our client nlsigndesign.com Public internet users must be able to create there own signs online, then save and submit as a file. </short_descr> <jobs> <job>PHP</job> </jobs> ... </xml-result>
рдЬрдмрдХрд┐ рдУрдбрд╕реНрдХ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ:
<response> .... <profile> .... <buyer> <cnt_assignments>0</cnt_assignments> <op_contract_date>December 18, 2011</op_contract_date> <timezone>Russia (UTC+06)</timezone> </buyer> <op_title>A social network client app for iPhone/iPad</op_title> <ciphertext>~~05d405f2d5b8eb27</ciphertext> .... <op_required_skills> <op_required_skill> <skill>ipad,ui-design,iphone-development</skill> </op_required_skill> </op_required_skills> .... <op_desc_digest> Hello, We need a social network client app for iPhone/iPad to be developed. It should support Facebook, Twitter and Linked-In. </op_desc_digest> .... </profile> </response>
рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рджреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рдлреНрд░реАрд▓рд╛рдВрд╕ рдПрдХреНрд╕рдЪреЗрдВрдЬреЛрдВ рдУрдбреЗрд╕реНрдХ рдФрд░ рдлреНрд░реАрд▓рд╛рдВрд╕рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдХреИрд╕реЗ рдПрдХрдЬреБрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╕реНрд░реЛрдд рдХреЛрдб PHP5 рдореЗрдВ Yii рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдБ
рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдХреНрд░реАрдЯ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдирд╛ рд╣реИред
interface ServiceInterface { public function authorize(); public function getServiceName(); public function setCredential(ModelCredential $credential); public function searchProjects(); }
рд╣рдо рд╕реЗрд╡рд╛ рдПрдбреЗрдкреНрдЯрд░ рдмрдирд╛рддреЗ рд╣реИрдВ
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕реЗрд╡рд╛ рдПрдбреЗрдкреНрдЯрд░ (
"рдПрдбреЗрдкреНрдЯрд░" рдХрд╛ рдПрдХ рд░реВрдкрд╛рдВрддрд░ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ) рдЬреЛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред рджреЛрдиреЛрдВ рдХрдХреНрд╖рд╛рдПрдВ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЕрдВрддрд░ рдХреЛ рдЫрд┐рдкрд╛рддреА рд╣реИрдВред
рдлреНрд░реАрд▓рд╛рдВрд╕рд░ рд╕реЗрд╡рд╛ рдПрдбрд╛рдкреНрдЯрд░:
class FreelancerService implements ServiceInterface { private $_serviceName = 'freelancer'; private $_service = null; public function __construct(ModelCredential $credential = null) { Yii::import('ext.freelancer-api-wrapper.*'); $this->_service = new Freelancer(Yii::app()->params['freelancer']['token'],Yii::app()->params['freelancer']['secret'], 'http://geeks-board.local/authorizeService/freelancer/?'); if($credential !== null) { $this->setCredential($credential); } } public function authorize() { if(!isset($_GET['oauth_token'])) { $requestToken = $this->_service->requestRequestToken(); $redirectUrl = $this->_service->getRedirectUrl($requestToken); header('Location: ' . $redirectUrl); } else { $oauth_verifier = $this->_service->getRequestTokenVerifier($_GET['oauth_token']); $auth = $this->_service->requestAccessToken($oauth_verifier,$_GET['oauth_token']); $this->_service->oauth->setToken($auth['oauth_token'],$auth['oauth_token_secret']); $this->_service->auth = $auth; return $auth; } return false; } public function getServiceName() { .... } public function setCredential(ModelCredential $credential) { .... } public function searchProjects() { .... } }
Odesk рд╕реЗрд╡рд╛ рдПрдбрд╛рдкреНрдЯрд░:
class OdeskService implements ServiceInterface { private $_serviceName = 'odesk'; private $_service = null; public function __construct(ModelCredential $credential = null) { Yii::import('ext.odesk-api.*'); Yii::import('classes.mapper.service.RequestMapper'); $this->_service = new oDeskAPI(Yii::app()->params['odesk']['secret'], Yii::app()->params['odesk']['token']); if($credential !== null) { $this->setCredential($credential); } } public function authorize() { return $this->_service->auth(); } public function getServiceName() { .... } public function setCredential(ModelCredential $credential) { .... } public function searchProjects() { .... } }
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рджреЛрдиреЛрдВ рд╡рд░реНрдЧ ServiceInterface рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реИред рдСрдерд░рд╛рдЗрдЬреЗрд╢рди рдореЙрдбрд▓ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред Oauth рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде, рдпрд╣ рдЯреЛрдХрди рдФрд░ рдЧреБрдкреНрдд рд╣реИред
рдПрдХ рдХрд╛рд░рдЦрд╛рдирд╛ рдмрдирд╛рдПрдБ
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдореЗрдВ рдореМрдЬреВрджрд╛ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдирдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╣рдо
OCP рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
"рдлрд╝реИрдХреНрдЯрд░реА рд╡рд┐рдзрд┐" рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
class ServiceFactory { public static function create($serviceName, $credentials = null) { $className = ucfirst(strtolower($serviceName)).'Service'; $serviceObject = Yii::createComponent($className, $credentials); if(!($serviceObject instanceof ServiceInterface)) { throw new Exception('Not an instance of Service'); } return $serviceObject; } }
рд╣рдордиреЗ рдПрдХ рдЪреЗрдХ рднреА рдЬреЛрдбрд╝рд╛ рдХрд┐ рдпрд╣ рд╡рд░реНрдЧ ServiceInterface рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕реЗрд╡рд╛ рд╡рд░реНрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ? рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЛрдИ рдЧрд▓рддреА рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ php рдЖрдкрдХреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдпрд╣ рд╣рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рд▓рд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИред рдпрд╣ рдЗрд╕ рдмрд╛рдд рдХреА рд╕рдордЭ рднреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рди рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕ рдЕрд╡рд╕рд░ рдкрд░, рдореИрдВ рдЕрдкрдиреА рдХрд╣рд╛рдиреА рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред
рдЬрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдореИрдВрдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ Google+ рдХреЗ рд▓рд┐рдП рдПрдбреЙрдкреНрдЯрд░ рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлреЗрд╕рдмреБрдХ рдФрд░ рдЯреНрд╡рд┐рдЯрд░ рдПрдбреЗрдкреНрдЯрд░ рдкрд╣рд▓реЗ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВред рдЬрдм рдореИрдВрдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдХрдХреНрд╖рд╛ рдЦреЛрд▓реА, рддреЛ рдореИрдВ рдЕрдВрджрд░ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рд╕реЗ рднрдпрднреАрдд рдерд╛ред рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХрд┐рди рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рдорд╛рдзреНрдпрдорд┐рдХ рдереЗред рдореБрдЭреЗ рдХрдИ рд╡рд░реНрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреА рдереА, рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдпрд╣ рдХреЛрдб рд▓рд┐рдЦрд╛ рдерд╛ред рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛ред рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рд╕реЗрд╡рд╛ рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рддреЛ рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ рдХрд┐ рдХреМрди рд╕реЗ рддрд░реАрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рд╕реЗрд╡рд╛ рдПрдбреЗрдкреНрдЯрд░ рдХреА рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдПрдХ рдХрд╛рд░рдЦрд╛рдирд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдПрдЧрд╛ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпреЗ рднрд╛рдЧ рдПрдХ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:
Yii::import('application.models.ModelCredential');
рдкрд░рд┐рдгрд╛рдо
рдпрд╣ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЖрдкрдХреЛ рдирдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдпрд╛ рдЙрдирдХреЗ рдХреЙрд▓ рдХреЗ рдирд╛рдо рдореЗрдВ рдЕрдВрддрд░ рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рд▓реМрдЯреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред
рдкреБрдирд╢реНрдЪ
рдлреИрдХреНрдЯрд░реА рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - Yii :: createComponent () рдкрд░ рдХреЙрд▓ рдХрд░рдХреЗред рдзрдиреНрдпрд╡рд╛рдж
рдПрдХрд╕реНрддреАрдЬреА