Conditions | 49 |
Paths | > 20000 |
Total Lines | 243 |
Code Lines | 139 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
337 | private function httpHandler() |
||
338 | { |
||
339 | // Instantiate Http Router Service |
||
340 | $this->services->load(Framework\Http\Router::class); |
||
341 | |||
342 | if (profiler() !== false) { |
||
343 | profiler()->watch('Parse Router Request'); |
||
344 | } |
||
345 | router()->parseRequest(); |
||
346 | |||
347 | if (config()->loadFile('session') === true) { |
||
348 | |||
349 | // Instantiate Session Service |
||
350 | $session = new Session(config('session', true)); |
||
351 | $session->setLogger($this->services->get('logger')); |
||
352 | |||
353 | if ( ! $session->isStarted()) { |
||
354 | $session->start(); |
||
355 | } |
||
356 | |||
357 | $this->services->add($session, 'session'); |
||
358 | |||
359 | if ($session->has('language') and $this->services->has('language')) { |
||
360 | language()->setDefault($session->get('language')); |
||
361 | } else { |
||
362 | $session->set('language', language()->getDefault()); |
||
363 | } |
||
364 | |||
365 | if (config('security')->protection[ 'csrf' ] === true) { |
||
366 | $csrfProtection = new Security\Protections\Csrf(); |
||
367 | $this->services->add($csrfProtection, 'csrfProtection'); |
||
368 | } |
||
369 | |||
370 | if (config('security')->protection[ 'xss' ] === true) { |
||
371 | $csrfProtection = new Security\Protections\Xss(); |
||
372 | $this->services->add($xssProtection, 'xssProtection'); |
||
373 | } |
||
374 | } |
||
375 | |||
376 | if (config()->loadFile('view') === true) { |
||
377 | // Instantiate Http UserAgent Service |
||
378 | $this->services->load(Framework\Http\UserAgent::class); |
||
379 | |||
380 | // Instantiate Http View Service |
||
381 | $this->services->load(Framework\Http\Parser::class); |
||
382 | |||
383 | // Instantiate Http View Service |
||
384 | $this->services->load(Framework\Http\View::class); |
||
385 | |||
386 | // Instantiate Http Presenter Service |
||
387 | $this->services->load(Framework\Http\Presenter::class); |
||
388 | presenter()->initialize(); |
||
389 | } |
||
390 | |||
391 | // Instantiate Http Middleware Service |
||
392 | $this->services->load(Framework\Http\Middleware::class); |
||
393 | |||
394 | if (profiler() !== false) { |
||
395 | profiler()->watch('Running Middleware Service: Pre Controller'); |
||
396 | } |
||
397 | middleware()->run(); |
||
398 | |||
399 | if (false !== ($controller = $this->services->get('controller'))) { |
||
400 | if ($controller instanceof Kernel\Http\Router\Datastructures\Controller) { |
||
401 | $controllerParameter = dash($controller->getParameter()); |
||
402 | $controllerRequestMethod = dash($controller->getRequestMethod()); |
||
403 | |||
404 | // Autoload Language |
||
405 | if ($this->services->has('language')) { |
||
406 | language()->loadFile($controller->getParameter()); |
||
407 | language()->loadFile($controller->getRequestMethod()); |
||
408 | language()->loadFile($controller->getParameter() . '/' . $controller->getRequestMethod()); |
||
409 | } |
||
410 | |||
411 | // Autoload Model |
||
412 | foreach ($this->modules as $module) { |
||
413 | if (in_array($module->getType(), ['KERNEL', 'FRAMEWORK'])) { |
||
414 | continue; |
||
415 | } |
||
416 | $module->loadModel(); |
||
417 | } |
||
418 | |||
419 | // Autoload Model |
||
420 | $modelClassName = str_replace(['Controllers', 'Presenters'], 'Models', $controller->getName()); |
||
421 | |||
422 | if (class_exists($modelClassName)) { |
||
423 | $this->models->register('controller', new $modelClassName()); |
||
424 | } |
||
425 | |||
426 | // Autoload Assets |
||
427 | if (config()->loadFile('view') === true) { |
||
428 | $controllerAssets = []; |
||
429 | $controllerAssetsDirs = []; |
||
430 | |||
431 | // Autoload Assets |
||
432 | foreach ($this->modules as $module) { |
||
433 | if (in_array($module->getType(), ['KERNEL', 'FRAMEWORK'])) { |
||
434 | continue; |
||
435 | } |
||
436 | |||
437 | $controllerAssets[] = $module->getParameter(); |
||
438 | $controllerAssetsDirs[] = $module->getParameter(); |
||
439 | } |
||
440 | |||
441 | $controllerAssets = array_reverse($controllerAssets); |
||
442 | $controllerAssetsDirs = array_reverse($controllerAssetsDirs); |
||
443 | |||
444 | $controllerAssets[] = $controllerParameter; |
||
445 | $controllerAssetsDirs[] = $controllerParameter; |
||
446 | |||
447 | $controllerAssets[] = $controllerRequestMethod; |
||
448 | |||
449 | foreach ($controllerAssetsDirs as $controllerAssetsDir) { |
||
450 | $controllerAssets[] = $controllerAssetsDir . '/' . $controllerParameter; |
||
451 | $controllerAssets[] = $controllerAssetsDir . '/' . $controllerRequestMethod; |
||
452 | $controllerAssets[] = $controllerAssetsDir . '/' . $controllerParameter . '/' . $controllerRequestMethod; |
||
453 | } |
||
454 | |||
455 | // Autoload Presenter |
||
456 | $presenterClassName = str_replace('Controllers', 'Presenters', $controller->getName()); |
||
457 | |||
458 | if (class_exists($presenterClassName)) { |
||
459 | $presenterClassObject = new $presenterClassName(); |
||
460 | if ($presenterClassObject instanceof Framework\Http\Presenter) { |
||
461 | $this->services->add($presenterClassObject, 'presenter'); |
||
462 | } |
||
463 | } |
||
464 | |||
465 | // Re-Initialize Presenter |
||
466 | presenter()->initialize()->assets->loadFiles( |
||
467 | [ |
||
468 | 'css' => $controllerAssets, |
||
469 | 'js' => $controllerAssets, |
||
470 | ] |
||
471 | ); |
||
472 | } |
||
473 | |||
474 | // Initialize Controller |
||
475 | if (profiler() !== false) { |
||
476 | profiler()->watch('Calling Hooks Service: Pre Controller'); |
||
477 | } |
||
478 | |||
479 | hooks()->callEvent(Framework\Services\Hooks::PRE_CONTROLLER); |
||
480 | |||
481 | if (profiler() !== false) { |
||
482 | profiler()->watch('Instantiating Requested Controller: ' . $controller->getClass()); |
||
483 | } |
||
484 | $requestController = $controller->getInstance(); |
||
485 | |||
486 | if (method_exists($requestController, '__reconstruct')) { |
||
487 | $requestController->__reconstruct(); |
||
488 | } elseif (method_exists($requestController, 'initialize')) { |
||
489 | $requestController->initialize(); |
||
490 | } |
||
491 | |||
492 | $this->services->add($requestController, 'controller'); |
||
493 | |||
494 | if (profiler() !== false) { |
||
495 | profiler()->watch('Calling Middleware Service: Post Controller'); |
||
496 | } |
||
497 | hooks()->callEvent(Framework\Services\Hooks::POST_CONTROLLER); |
||
498 | |||
499 | $requestMethod = $controller->getRequestMethod(); |
||
500 | $requestMethodArgs = $controller->getRequestMethodArgs(); |
||
501 | |||
502 | // Call the requested controller method |
||
503 | if (profiler() !== false) { |
||
504 | profiler()->watch('Execute Requested Controller Method'); |
||
505 | } |
||
506 | ob_start(); |
||
507 | $requestControllerOutput = $requestController->__call($requestMethod, $requestMethodArgs); |
||
508 | |||
509 | if (empty($requestControllerOutput)) { |
||
510 | $requestControllerOutput = ob_get_contents(); |
||
511 | ob_end_clean(); |
||
512 | } elseif (is_bool($requestControllerOutput)) { |
||
513 | if ($requestController instanceof Framework\Http\Controllers\Restful) { |
||
514 | $requestController->sendError($requestControllerOutput); |
||
515 | } else { |
||
516 | if ($requestControllerOutput === true) { |
||
517 | output()->sendError(200); |
||
518 | exit(EXIT_SUCCESS); |
||
519 | } elseif ($requestControllerOutput === false) { |
||
520 | output()->sendError(204); |
||
521 | exit(EXIT_ERROR); |
||
522 | } |
||
523 | } |
||
524 | } elseif (is_array($requestControllerOutput) or is_object($requestControllerOutput)) { |
||
525 | if ($requestController instanceof Framework\Http\Controllers\Restful) { |
||
526 | $requestController->sendPayload($requestControllerOutput); |
||
527 | } else { |
||
528 | output()->send($requestControllerOutput); |
||
529 | } |
||
530 | } elseif (is_numeric($requestControllerOutput)) { |
||
531 | output()->sendError($requestControllerOutput); |
||
532 | } |
||
533 | |||
534 | if (empty($requestControllerOutput) or $requestControllerOutput === '') { |
||
535 | if ($requestController instanceof Framework\Http\Controllers\Restful) { |
||
536 | $requestController->sendError(204); |
||
537 | } elseif (config()->loadFile('view') === true) { |
||
538 | $filenames = [ |
||
539 | $controllerRequestMethod, |
||
540 | $controllerParameter . DIRECTORY_SEPARATOR . $controllerRequestMethod, |
||
541 | ]; |
||
542 | |||
543 | if ($controllerRequestMethod === 'index') { |
||
544 | array_unshift($filenames, $controllerParameter); |
||
545 | } |
||
546 | |||
547 | foreach ($filenames as $filename) { |
||
548 | if (view()->getFilePath($filename)) { |
||
549 | view()->load($filename); |
||
550 | } |
||
551 | } |
||
552 | |||
553 | if (presenter()->partials->offsetExists('content')) { |
||
554 | view()->render(); |
||
555 | exit(EXIT_SUCCESS); |
||
556 | } |
||
557 | } |
||
558 | |||
559 | // Send default error 204 - No Content |
||
560 | output()->sendError(204); |
||
561 | } elseif (is_string($requestControllerOutput)) { |
||
562 | if (is_json($requestControllerOutput)) { |
||
563 | output()->setContentType('application/json'); |
||
564 | output()->send($requestControllerOutput); |
||
565 | } elseif (is_serialized($requestControllerOutput)) { |
||
566 | output()->send($requestControllerOutput); |
||
567 | } elseif (config('presenter', true)->enabled === true) { |
||
568 | presenter()->partials->offsetSet('content', $requestControllerOutput); |
||
569 | view()->render(); |
||
570 | } else { |
||
571 | output()->send($requestControllerOutput); |
||
572 | } |
||
573 | exit(EXIT_SUCCESS); |
||
574 | } |
||
575 | } |
||
576 | } |
||
577 | |||
578 | // Show Error (404) Page Not Found |
||
579 | output()->sendError(404); |
||
580 | } |
||
582 |