Ejemplo n.º 1
0
 public function invokeBootMethods($object, ContainerInterface $container)
 {
     foreach (get_class_methods($object) as $method) {
         if ('boot' === strtolower(substr($method, 0, 4))) {
             if ($object instanceof static && 'bootkernel' === strtolower($method)) {
                 continue;
             }
             if (4 == strlen($method)) {
                 $object->boot();
             } else {
                 $args = $container->populateArguments(new \ReflectionMethod(get_class($object), $method));
                 switch (count($args)) {
                     case 0:
                         $object->{$method}();
                         break;
                     case 1:
                         $object->{$method}($args[0]);
                         break;
                     case 2:
                         $object->{$method}($args[0], $args[1]);
                         break;
                     case 3:
                         $object->{$method}($args[0], $args[1], $args[2]);
                         break;
                     case 4:
                         $object->{$method}($args[0], $args[1], $args[2], $args[3]);
                         break;
                     default:
                         call_user_func_array([$object, $method], $args);
                 }
             }
         }
     }
 }