また、 bin\console server:run が使えなくなる件については確かに開発用の機能なのでそれも仕方ないかなという感じでは有りますが、ドキュメントルートになる public ディレクトリ内でPHPのビルトインサーバーを自分で起動してやれば dev モード時と同じようにビルトインサーバーで動作確認が可能です。
<?php
namespace App\Service;
use App\Repository\BooksRepository;
class BooksService
{
private $booksRepository;
public function __construct(BooksRepository $booksRepository)
{
$this->booksRepository = $booksRepository;
}
public function bookDetail(int $book_id)
{
return $this->booksRepository->get($book_id);
}
}
monolog:
handlers:
main:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
channels: ["!event"]
# uncomment to get logging in your browser
# you may have to allow bigger header sizes in your Web server configuration
#firephp:
# type: firephp
# level: info
#chromephp:
# type: chromephp
# level: info
console:
type: console
process_psr_3_messages: false
channels: ["!event", "!doctrine", "!console"]
<?php
namespace App\Service;
use App\Repository\BooksRepository;
class BooksService
{
private $booksRepository;
public function __construct(BooksRepository $booksRepository)
{
$this->booksRepository = $booksRepository;
}
public function bookDetail(int $book_id)
{
return $this->booksRepository->get($book_id);
}
}
これでコントローラ、サービス、リポジトリの準備は完了です。該当URLにアクセスすると RootController::bookDetailAction BooksService:: bookDetail BooksRepositoryImpl:: get という段階を踏んでアクセスされます。最後にビュー detail.html.twig を調整しておきます。
なお、MySQL 8.0ではデフォルトの認証方法が変わった事も有り、「The server requested authentication method unknown to the client”」というエラーになる場合が有ります、これはググれば出てきます該当ユーザーの認証方法を caching_sha2_password から mysql_native_password を使った物に変更する事で回避可能です。