Сам DI -
php-di.org
Вроде бы я понял суть паттерна, но не понял как его применять...
Например вот такой код (Упрощённый и собранный в кучу для примера):
<?php
require_once '../vendor/autoload.php';
use DI\ContainerBuilder;
$di = ContainerBuilder::buildDevContainer();
$di->set('db', new class {
public function getRow ()
{
return [
'name' => 'MyName',
'family' => 'MyFamily',
'age' => '17'
];
}
});
abstract class BaseController
{
protected $di;
public function __construct ($di)
{
$this->di = $di;
}
abstract function indexAction ();
}
class Controller extends BaseController
{
public function indexAction ()
{
$row = $this->di->get('db')->getRow();
// Пример всё таки, не прикручивать же для него шаблонизатор
echo 'Name: ',$row['name'],'<br> Family: ',$row['family'],'<br> Age: ',$row['age'];
}
}
$controller = new Controller($di);
$controller->indexAction();
Правилен ли подход в целом? И ещё, меня смущает вот это:
$row = $this->di->get('db')->getRow();
Хочется попроще как то так:
$row = $this->db->getRow();
Как это сделать с PHP-DI? И возможно ли вообще?