В нормальных случаях, зависимости, которые имеются в проекте должны вести на оригинальный репозиторий.
SELECT * FROM `my_table` WHERE foo="bar" LIMIT 10;
SELECT FOUND_ROWS() as count;
Здесь ты ничего не сократишь.
require 'vendor/autoload.php';
(function() {
$builder = new \DI\ContainerBuilder();
$builder->addDefinitions([
'db.host' => 'localhost',
'db.user' => 'root',
'db.pass' => 'password',
//инструкция о том как создавать объект DB
'DB' => DI\create()->constructor(DI\get('db.host'), DI\get('db.user'), DI\get('db.pass')),
]);
$container = $builder->build();
//просим контейнер создать объект A
$a = $container->get('A');
$b = $a->B;
var_dump($b);
})();
Class A {
public $B;
//контейнер видит что объекту A нужен объект B и создает его
public function __construct(B $b) {
$this->B = $b;
}
}
Class B {
private $db;
//контейнер видит что объекту B нужен объект DB и создает его
public function __construct(DB $db) {
$this->db = $db;
}
}
Class DB {
private $connection = 'connection';
//контейнер не знает что подставить в конструктор DB поэтому для него нужно оставить инструкцию в addDefinitions
public function __construct($host, $user, $pass) {
}
public function get() {
return $this->connection;
}
}
В воркер надо передавать объект, который работает с воркером.
Если у воркера есть своя зависимость, то ее контейнер ему создаст.
$con->make
то $con и есть та самая "канализация" которая идет App -> Router что бы создать Worker, а если в воркере нужно что то создать у чего есть зависимость то и туда нужно передать $con.
Пробую в ToDoList подключить boilerplate как 2й remote (1й остается для push'a в оригинальный, а 2й будет для обновлений boilerplate) но пока не разобрался с merge тк ругается что истории отличаются.