рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреБрдг, рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдпрд╛ рдЬрд╛рджреВ рдХреЗ рддрд░реАрдХреЗ?

рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд░рд╛рдп рдЗрд╕ рдмрд╛рдд рдкрд░ рднрд┐рдиреНрди рд╣реИ рдХрд┐ рдХреНрдпрд╛ PHP рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ (рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рдЬреА рдпрд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рд░рдЦрдиреЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдПрдХ рдЕрдиреНрдп рд╕рдордЭреМрддрд╛ рдЬрд╛рджреВ рдХреЗ рддрд░реАрдХреЛрдВ __get() рдФрд░ __set() ред
рдкреНрд░рддреНрдпреЗрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЕрдкрдиреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рд╣реИрдВ, рдЖрдЗрдП рдЙрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ ...


рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 class Foo { public $bar; } $foo = new Foo(); $foo->bar = 1; $foo->bar++; 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдмрд╛рд░ рдлреВ рд╡рд░реНрдЧ рдХреА рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рдо рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд╛рдн

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдиреБрдХрд╕рд╛рди


рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 class Foo { private $bar; public function getBar() { return $this->bar; } public function setBar($bar) { $this->bar = $bar; } } $foo = new Foo(); $foo->setBar(1); $foo->setBar($foo->getBar() + 1); 

рдпрд╣рд╛рдВ bar рд╕рдВрдкрддреНрддрд┐ рдирд┐рдЬреА рд╣реИ, рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╕реАрдзреЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдХрд┐рд╕реА рдкреНрд░реЙрдкрд░реНрдЯреА рдХреА рд╡реИрд▓реНрдпреВ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреА getBar рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП getBar , рдпрд╛ setBar рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рддрд╛рдХрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХреЗрдВ рдХрд┐ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИ, рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдЙрдирдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХреЗ рдлрд╛рдпрджреЗ

рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХреА рдХрдорд┐рдпрд╛рдВ


рдЬрд╛рджреВ рдкрд╛рдиреЗ рд╡рд╛рд▓реЛрдВ рдФрд░ рдмрд╕рдиреЗ рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 class Foo { protected $bar; public function __get($property) { switch ($property) { case 'bar': return $this->bar; //etc. } } public function __set($property, $value) { switch ($property) { case 'bar': $this->bar = $value; break; //etc. } } } $foo = new Foo(); $foo->bar = 1; $foo->bar++; 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, bar рд╕рдВрдкрддреНрддрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реЛред рдЬрдм PHP рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рддреЛ рдпрд╣ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рджреВ рд╡рд┐рдзрд┐ ( __get() , __set() рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП __set() рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рдордзреНрдп рдореИрджрд╛рди рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрд╛рдореА рд╣реИ (рдиреАрдЪреЗ рдХрдорд┐рдпрд╛рдВ рджреЗрдЦреЗрдВ!)ред рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ __get() рдФрд░ __set() рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рд╕рдВрдкрддреНрддрд┐ рдХреЛ protected рдпрд╛ private рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ protected рдФрд░ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, рдпрд╛ рдпрджрд┐ рд╕рдВрдкрддреНрддрд┐ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИред

рдЬрд╛рджреВ рдкрд╛рдиреЗ рдФрд░ рдмрд╕рдиреЗ рдХреЗ рдлрд╛рдпрджреЗ

рдЬрд╛рджреВ рдкрд╛рдиреЗ рдФрд░ рдмрд╕рдиреЗ рдХреЗ рдиреБрдХрд╕рд╛рди


рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╖реНрдЯрд┐рдХреЛрдг
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░реЛрдВ рдореЗрдВ рдХрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╛рдпрджреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╣рд░ рд╕рдордп рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╡рд┐рд╢реЗрд╖рдХрд░ Java рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд╛рд▓реЗ рд▓реЛрдЧ!)ред рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рднрд╛рд╖рд╛ рдХреЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреА рдЕрддреНрдпрдзрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ (рдпрд╣ рдореБрдЭреЗ рдЧреБрд╕реНрд╕рд╛ рджрд┐рд▓рд╛рддрд╛ рд╣реИ рдЬрдм рд╕рд╛рдзрд╛рд░рдг рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░реНрд╕ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рд╕реЗрдЯ рдХрд░реЗрдВ)ред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореИрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рд╕рдЦреНрддреА рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╛ рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд▓рдВрдмрд┐рдд рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк?
PHP рд╕реАрдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ C # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред C # рдореЗрдВ, рд╕рднреА рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдк рд╕реАрдзреЗ рдЕрдкрдиреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ PHP рдореЗрдВ рдЬрд╛рджреВ рдХреЗ рддрд░реАрдХреЛрдВ __get() рдФрд░ __set() рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЧреБрдг рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рд╕реБрд▓рдн рд░рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╕реБрдирд╣рд░рд╛ рдорддрд▓рдм рд╣реИ рдФрд░ PHP рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдЕрд╡рд╕рд░ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде C # рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ RFC рдХреЛ рдЖрд╡рд╢реНрдпрдХ рджреЛ-рддрд┐рд╣рд╛рдИ рд╡реЛрдЯ рдирд╣реАрдВ рдорд┐рд▓реЗ: wiki.php.net/rfc/propertygetsetsyntax.v1.2 !

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


All Articles