I have an Eloquent Model called Surface which is dependent on a ZipCodeRepository object:
class Surface extends Model{
public function __construct(ZipCodeRep
Thanks to @svmm for referencing the question mentioned in the comments. I found that you cannot use dependency injection on Models because you would have to change the signature on the constructor which doesn't work with the Eloquent framework.
What I did as an intermediate step, while refactoring the code, is use App::make
in the constructor to create the object, such as:
class Surface extends Model{
public function __construct()
{
$this->zipCode = App::make('App\Repositories\ZipCodeRepositoryInterface');
}
That way the IoC will still grab the implemented repository. I am only doing this until I can pull the functions into the repository to remove the dependency.
In Laravel 5.7 you can use the global resolve(...)
method. I don't think the global App
is defined in more recent version of Laravel.
$myService = resolve(ServiceName::class);
Resolving in Laravel docs