рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рдлрдВрдХреНрд╢рдирд▓ рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ

рдХрд░реАрдиреЗ рдХреА рдХрд▓рд╛
рд▓реЗрдЦ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ PHP рдореЗрдВ рдХрд░реА рдФрд░ рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ , рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реБрдЖ, рдЕрд░реНрдерд╛рддреН рдПрдХ рд╡рд┐рдзрд┐, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВред

рдкреНрд░рд╛рдердорд┐рдХ рдЕрдерд╡рд╛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд▓рдХреНрд╖рдг


рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдХрд░реА рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдЕрдкрдиреЗ рддрд░реНрдХреЛрдВ рдХреЛ рд▓реЗрддрд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдПрдоред рд╢реЗрдЗрдирдлрд┐рдВрдХрд▓ рдФрд░ рдЬреАред рдлреНрд░реЗрдЬ рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдПрдЪред рдХрд░реА рдХреЗ рд╕рдореНрдорд╛рди рдореЗрдВ рдЗрд╕рдХрд╛ рдирд╛рдо рдорд┐рд▓рд╛ред рдЖрдЗрдП рдЕрдм рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╡рд┐рдзрд┐ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди 2 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдмрдбрд╝реА рдХреНрд╖рдорддрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬрдм рддрд░реАрдХреЛрдВ рдХреЛ рд░рди-рдЯрд╛рдЗрдо рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдП рдмрд┐рдирд╛ред

рд╕реНрд░реЛрдд рдХреЛрдб


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

abstract class ACurry { /** * A curry method that returns a partial call of function * or a result of its execution, depending on the number * of parameters of the invoked method * * @param array $callback * @param array $args * @return callable */ protected function curry($callback, $args = array()) { return function() use($callback, $args) { $methodInfo = new ReflectionMethod(get_class($callback[0]), $callback[1]); if (count(array_merge($args, func_get_args())) >= $methodInfo->getNumberOfParameters()) { return call_user_func_array($callback, $args); } else { return $callback[0]->curry($callback, $args); } }; } /** * Create a method $methodName by currying a method of $curryMethodName * with arguments $args * * @param string $methodName * @param string $curryMethodName * @param array $args * @return ACurry */ public function createMethod($methodName, $curryMethodName, $args = array()) { $this->$methodName = $this->curry(array($this, $curryMethodName), $args); return $this; } /** * @param string $name * @param array $args * @return mixed */ public function __call($name, $args) { if (property_exists($this, $name) && is_callable($this->$name)) { return call_user_func_array($this->$name, $args); } } } 

рдЙрджрд╛рд╣рд░рдг


рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдпрд╣ рдХреЙрдорд░реЗрдб рдмреЛрдбрд┐рдЧреНрд░реАрдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
 <?php require_once 'ACurry.php'; /** * A class to calculate a mass from the density and size */ class Masses extends ACurry{ public function __construct(){ /* create method to calculate mass of iron cube */ $this->createMethod('ironCube', 'cube', array(7.8)); } /** * Method return a mass of subjection from density and size */ public function get($density, $length, $width, $height){ return $density * $length * $width * $height; } /** * Method return a mass of cube subjection from density and size */ public function cube($density, $length){ return $this->get($density, $length, $length, $length); } } $masses=new Masses(); echo $masses->ironCube(2); 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд▓реЛрд╣реЗ рдХреЗ рдШрди () рдЫрджреНрдо рд╡рд┐рдзрд┐ 2 рд╕реЗрдореА рдХреЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рдо рдореЗрдВ рд▓реЛрд╣реЗ рдХреЗ рдШрди рдХреЗ рд╡рдЬрди рдХреА рдЧрдгрдирд╛ рдХрд░рддреА рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЛрд╣реЗ рдХрд╛ рдШрдирддреНрд╡ 7.8 рдЧреНрд░рд╛рдо / рд╕реЗрдореА┬│ рд╣реИ)ред

рдкрд░рд┐рдгрд╛рдо


рддреЛ рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдирд┐рдХрд▓рд╛ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рджрд╛рдпрд░рд╛ рдХрд╛рдлреА рдмрдврд╝ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рд╣рдо рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ рдХрд░реАрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

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


All Articles