سلام و عرض ادب
با این روشی که استاد فرمودند، ما توی constructor سرویسمون فقط میتونیم از کلاس هایی استفاده کنیم که از نوع DownloadableFile هستن:
<?php namespace Src\\Solid\\Lsp; class FileService { public function __construct(private DownloadableFileInterface $file) { } public function download() { return $this->file->download(); } }
حالا اینجا سوالی که پیش میاد اینه که ما اگر بخوایم از LocalFile به جای مثلا DropBoxFile استفاده کنیم چی میشه؟
اگر که LocalFile پاس داده بشه چون که از نوع DownloadableFileنیست، به خطا میخوریم، و اگر هم که بیایم متد construct سرویسمون رو عوض کنیم بگیم به جای DownloadableFileInterface باید FileInterface بگیری هم که عملا داریم OCP رو نقض میکنیم.
راه حلش چیه؟