public function __construct(
protected AppleMusic $apple, // ここがポイント
) {} // <- 結果として、本体に書くことがなくなった
引数の前に protected のような可視性(public, protected, private)を付けると、PHPは以下の3つのことを自動的にやってくれます。
protected AppleMusic $apple; というプロパティを宣言したとみなす。
__construct の引数として AppleMusic $apple を受け取るとみなす。
this->apple = $apple; という代入処理を裏で実行したとみなす。
つまり、従来の書き方で {} の中に書いていた処理を、引数の宣言部分が肩代わりしてくれるようになったのです。
その結果、開発者がメソッドの本体 {} の中に書くべきコードがなくなり、中身が空っぽの {} だけが残る、ということになります。