Я играю с фреймворком Slim PHP и наткнулся на ситуацию, которую не могу решить.
Сначала я объясню базовую настройку:
Используя slim-skeleton, у меня есть файл dependencies.php, в котором настроен DIC. Это стандартная установка Slim-Skeleton с двумя дополнительными вещами:
$container['db'] = function ($c) {
return new PDO('mysql:host=localhost;dbname=****', '********', '********');
};
$container['model.user'] = function ($c) {
$db = $c['db'];
return new Dash\Models\User($db);
};
Итак, как видите, у меня есть две новые вещи, зарегистрированные в DIC: объект PDO и объект User.
Но передача объекта базы данных для каждой другой модели немного затруднительна... Я хотел бы иметь возможность внедрить объект PDO в родительский класс с именем Model.
Итак, модель должна выглядеть так:
class Model
{
protected $db;
public function __construct($db)
{
$this->db = $db;
}
}
И модель пользователя:
class User extends Model
{
public function getById($id)
{
$this->db->... // I have access to the database object (PDO) from the parent class.
}
}
Дело в том, что у меня не может быть родительского объекта, потому что контейнер Slim возвращает новый экземпляр User и не создает экземпляр родительского класса Model.
Любые идеи о том, как добиться наследования, используя контейнер Slim чистым и удобным способом?
Заранее спасибо.