سلام و عرض ادب
ما توی فایل init یکبار از کلاس Request یه آبجکت new کردیم. اینجا:
define('BASE_PATH',__DIR__ . "/../");
include BASE_PATH . 'vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(BASE_PATH);
$dotenv->load();
$request = new \App\Core\Request();
include BASE_PATH . 'helpers/helpers.php';
include BASE_PATH . 'routes/web.php';
بعد اومدیم تو متد construct کلاس Router هم باز یه بار دیگه از این کلاس new کردیم. اینجا:
public function __construct()
{
$this->request = new Request();
$this->routes = Route::routes();
$this->currentRoute = $this->findRoute($this->request) ?? null;
}
این یکی از اصول solid یا clean code رو نقض نمیکرد؟ الان اسمش رو یادم نمیاد. ولی چیزی که یادم میاد تو یکی از جلسات گفته شد که از یه کلاس بیشتر از یک بار new نشه. باید یکبار یک آبجکت از اون کلاس ساخته شه و هر جا نیاز بود از همون آبجکت استفاده کنیم.
اگه درست متوجه شدم،1- اینجا چرا دوبار new کردیم؟ و 2- چطور باید اینجا این مشکل رو حل کنیم؟