прежде всего, я видел много кода, чтобы доказать, что поставщик услуг, но у меня все еще есть некоторые проблемы
пример кода:
<?php
namespace App\Http\Controllers\Test;
use App\Http\Controllers\Controller;
class Test extends Controller
{
// simple case
public function __construct(\SomeClass $class)
{
$this->class = $class;
}
// vs
public function __construct()
{
$this->class = new \SomeClass();
}
Большая часть кода, который я видел, говорит, что класс сложный:
public function __construct()
{
$this->class = new \SomeClass(new Bar(), new Foo('other dependence'));
}
// then they said provider can solve it like:
$this->app->bind('SomeClass', function(){
return new \SomeClass(new Bar(), new Foo('other dependence'));
});
// and use like follow:
public function __construct(\SomeClass $class)
{
$this->class = $class;
}
}
Итак, мой вопрос:
если класс необходим для получения экземпляра
почему бы не сделать то же самое (создать новый экземпляр) в SomeClass, Bar и Foo, например:
class SomeClass
{
public function __construct()
{
$this->bar = new Bar();
$this->foo = new Foo();
}
}
class Bar
{
public function __construct()
{
}
}
class Foo
{
public function __construct()
{
$this->other_dep = new OtherDependence();
}
}
тогда я все еще могу закодировать, как написано:
public function __construct()
{
$this->class = new \SomeClass();
// now it's equal to
// $this->class = new \SomeClass(new Bar(), new Foo('other dependence'));
}