AhmetYlmaz Sınıf özelliğinin tipi StreamerFactory. private StreamerFactory $streamerFactory; yapılarak $streamerFactory özelliğinin mutlaka bir StreamerFactory örneği olmasından emin olunmuş. Başka bir tip alırsa hata verecek. PHP 7.4 ile gelen bir özellik. Bu üstteki durumda (sadece dependency injection yapıldığı için) kullanılmasa da olur ama artık kullanmak gerekiyor çünkü kullanmazsanız PlayController::$streamerFactory kurucu yönteme ne verirseniz o olur. Bu da hatalı işlem yapmanıza sebep verir. Belki bu örnekte controller olduğu için hata alma olasılığınız çok düşük ama normal servis sınıflarında mutlaka tip belirlemelisiniz.
PHP 8+ kullanıyorsanız özellik tanımlamadan şu şekilde kullanabilirsiniz:
public function __construct(
private StreamerFactory $streamerFactory,
)
{
}
Burada mecburen tip belirtmek zorundasınız çünkü hem özellik tanımlama hem de injection'ı ayna anda yapıyorsunuz.
Laravel'deki örnekler codebase %100 PHP 8 özellikleri kullanmadığı için hala bu şekilde veriliyor. İleride güncellenecek. PHP 8+ kullanıyorsanız sizin yapmanız gereken:
public function __construct(
protected UserRepository $users,
)
{
}