Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Dependency Injection — явная передача объектов в методы класса, только так. Либо в конструктор (идеальный вариант), либо в init-методы (initServiceA()).
public function __construct(Grabber $grabber, HtmlExtractor $filter)
$configGF = [
'filter' => 'MyMock',
];
$finder = new GoogleFinder($config);
$this->filter = new $configGF['filter]; (равно как $function_name()) мне жутко не нравится. Вы часто используете?class BooksService {
public function booksMethod()
{
$book1 = new Book;
$book1->someAttr = 'val1';
$book1->someMethod();
// ...
$book5 = new Book;
$book5->someAttr = 'val5';
$book5->anotherAttr = 'anotherVal';
$book5->someMethod();
// ...
}
}
Все зависит от того каких взглядов на Модель вы придерживаетесь.
class BooksService
{
private $bookFactory;
public function __construct($bookFactory)
{
$this->bookFactory = $bookFactory;
}
public function booksMethod()
{
$book1 = $this->bookFactory->create();
$book5 = $this->bookFactory->create();
}
}
return new Controller(GoogleFinder $finder);
Проблема инициализации объектов в ООП приложениях на PHP. Поиск решения при помощи шаблонов Registry, Factory Method, Service Locator и Dependency Injection