Exemple #1
0
 public function testS()
 {
     $container = new Container();
     $closure = function () {
         return ['$CLOSURE', func_get_args()];
     };
     // closure
     $result = $container->call($closure, ['param1', 'param2']);
     static::assertEquals(['$CLOSURE', ['param1', 'param2']], $result);
     // function
     $result = $container->call(__NAMESPACE__ . '\\callTestFunction', ['param2', 'param3']);
     static::assertEquals(['function', ['param2', 'param3']], $result);
     // static method
     $result = $container->call(CallTestInvokers::class . '::staticMethod', ['param3', 'param4']);
     static::assertEquals(['staticMethod', ['param3', 'param4']], $result);
     // array of static
     $result = $container->call([CallTestInvokers::class, 'staticMethod'], ['param4', 'param5']);
     static::assertEquals(['staticMethod', ['param4', 'param5']], $result);
     // array of method
     $result = $container->call([new CallTestInvokers(), 'instanceMethod'], ['param5', 'param6']);
     static::assertEquals(['instanceMethod', ['param5', 'param6']], $result);
     // invoker
     $result = $container->call(new CallTestInvokers(), ['param6', 'param7']);
     static::assertEquals(['__invoke', ['param6', 'param7']], $result);
     // __call
     $result = $container->call([new CallTestInvokers(), 'callViaCallMagicMethod'], ['param7', 'param8']);
     static::assertEquals(['__call', 'callViaCallMagicMethod', ['param7', 'param8']], $result);
     // __staticCall
     $result = $container->call([CallTestInvokers::class, 'callViaStaticCallMagicMethod'], ['param8', 'param9']);
     static::assertEquals(['__callStatic', 'callViaStaticCallMagicMethod', ['param8', 'param9']], $result);
 }