22
33namespace SEOService2020 \Morphy ;
44
5+ use ReflectionMethod ;
56use BadMethodCallException ;
67use InvalidArgumentException ;
78use phpMorphy ;
89
910
1011class MorphyManager
1112{
13+ use PreprocessWord;
14+
1215 protected $ morphies ;
1316
1417 public function __construct (array $ morphies )
@@ -37,6 +40,10 @@ public function morphy(string $name): ?Morphy
3740
3841 public function __call ($ name , $ arguments )
3942 {
43+ if ((new ReflectionMethod (phpMorphy::class, $ name ))->isStatic ()) {
44+ return self ::__callStatic ($ name , $ arguments );
45+ }
46+
4047 if (count ($ arguments ) < 1 ) {
4148 throw new BadMethodCallException (
4249 "Too few arguments provided: at least morphy name expected "
@@ -48,7 +55,12 @@ public function __call($name, $arguments)
4855 throw new InvalidArgumentException ("Unknown morphy: $ morphyName " );
4956 }
5057
51- return call_user_func_array ([$ this ->morphies [$ morphyName ], $ name ], $ arguments );
58+ $ morphy = $ this ->morphies [$ morphyName ];
59+ if (self ::needWordPreprocess ($ name ) && !empty ($ arguments )) {
60+ $ arguments [0 ] = self ::preprocessedWord ($ arguments [0 ], $ morphy );
61+ }
62+
63+ return call_user_func_array ([$ morphy , $ name ], $ arguments );
5264 }
5365
5466 public static function __callStatic ($ name , $ arguments )
0 commit comments