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