Best practice to initiate object

Posted 2 years ago by longestdrive

Hi

I'm after some best practice to initiating objects to try and refactor some code.

In my Laravel app I generally have followed this approach to structure a class:

<?php

namespace app\Libraries\Generators;

use App\Models\Fixture;
use App\Libraries\Repositories\FixtureRepository;

class FixtureMatrixGenerator
{
    protected $fixture;
    protected $fixtureRepository;

    /**
     * FixtureMatrixGenerator constructor.
     * @param $fixture
     */
    public function __construct(Fixture $fixture, FixtureRepository $fixtureRepo)
    {
        $this->fixture = $fixture;
        $this->fixtureRepository = $fixtureRepo;
    }

}

But then if in say a controller I try to initiate the object like this:

$leagueMatrixGenerator = new FixtureMatrixGenerator();

I get an error Too few Arguments to function Which I expect.

So what's the best practice for loading dependancies into a class? In some of my controllers for example I end up with 6-7 dependcies (generally models or repositories) which seems to bloat the __constructor method. Is there a better method for creating new objects only when I need them?

Sorry, likely a basic oop question but I've got stuck down one route that now seems messy

Please sign in or create an account to participate in this conversation.