Symfony Exception

TypeError

HTTP 500 Internal Server Error

App\Model\Library::getBookBySlug(): Return value must be of type App\Model\Book, null returned

Exception

TypeError

  1.             if ($book->slug == $slug) {
  2.                 $chosen $book;
  3.                 break;
  4.             }
  5.         }
  6.         return $chosen;
  7.     }
  8.     /**
  9.      * Gives an array of book objects which match a given category
  10.      *
Library->getBookBySlug() in src/Controller/ReadController.php (line 33)
  1.      *
  2.      * @route("/{slug}/", name="book", requirements={"slug": "(?!_)(?!admin/)[^/]+"})
  3.      */
  4.     public function bookAction($slugLibrary $library): Response {
  5.         /** @var \App\Model\Book */
  6.         $book $library->getBookBySlug($slug);
  7.     
  8.         if (!$book) {
  9.             throw $this->createNotFoundException("We can't find a '$slug' book");
  10.         }
  11.             
  1.         $this->dispatcher->dispatch($eventKernelEvents::CONTROLLER_ARGUMENTS);
  2.         $controller $event->getController();
  3.         $arguments $event->getArguments();
  4.         // call controller
  5.         $response $controller(...$arguments);
  6.         // view
  7.         if (!$response instanceof Response) {
  8.             $event = new ViewEvent($this$request$type$response);
  9.             $this->dispatcher->dispatch($eventKernelEvents::VIEW);
  1.     public function handle(Request $requestint $type HttpKernelInterface::MAIN_REQUESTbool $catch true): Response
  2.     {
  3.         $request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
  4.         try {
  5.             return $this->handleRaw($request$type);
  6.         } catch (\Exception $e) {
  7.             if ($e instanceof RequestExceptionInterface) {
  8.                 $e = new BadRequestHttpException($e->getMessage(), $e);
  9.             }
  10.             if (false === $catch) {
  1.         $this->boot();
  2.         ++$this->requestStackSize;
  3.         $this->resetServices true;
  4.         try {
  5.             return $this->getHttpKernel()->handle($request$type$catch);
  6.         } finally {
  7.             --$this->requestStackSize;
  8.         }
  9.     }
  1.         $this->request $request;
  2.     }
  3.     public function run(): int
  4.     {
  5.         $response $this->kernel->handle($this->request);
  6.         $response->send();
  7.         if ($this->kernel instanceof TerminableInterface) {
  8.             $this->kernel->terminate($this->request$response);
  9.         }
in vendor/autoload_runtime.php -> run (line 29)
  1. $app $app(...$args);
  2. exit(
  3.     $runtime
  4.         ->getRunner($app)
  5.         ->run()
  6. );
require_once('/var/www/civicrm-docs/vendor/autoload_runtime.php') in public/index.php (line 5)
  1. <?php
  2. use App\Kernel;
  3. require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
  4. return function (array $context) {
  5.     return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
  6. };

Logs

No log messages

Stack Trace

TypeError
TypeError:
App\Model\Library::getBookBySlug(): Return value must be of type App\Model\Book, null returned

  at src/Model/Library.php:101
  at App\Model\Library->getBookBySlug()
     (src/Controller/ReadController.php:33)
  at App\Controller\ReadController->bookAction()
     (vendor/symfony/http-kernel/HttpKernel.php:152)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
     (vendor/symfony/http-kernel/HttpKernel.php:74)
  at Symfony\Component\HttpKernel\HttpKernel->handle()
     (vendor/symfony/http-kernel/Kernel.php:202)
  at Symfony\Component\HttpKernel\Kernel->handle()
     (vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
  at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
     (vendor/autoload_runtime.php:29)
  at require_once('/var/www/civicrm-docs/vendor/autoload_runtime.php')
     (public/index.php:5)