我正在玩Slim PHP框架,偶然发现了一些我无法解决的问题。
首先,我将解释基本设置:
使用slim-skeleton,我有一个dependencies.php文件,其中设置了DIC。它是默认的瘦骨架设置,还有两件事:
$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 对象和一个用户对象。
但为每个其他模型传递数据库对象有点痛苦......我希望能够将PDO对象注入父类,称为模型。 / p>
所以模型看起来应该是这样的:
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的容器以干净和可用的方式?
提前致谢。
答案 0 :(得分:1)
这不是继承的工作方式。 User
是 Model
的实例。所以当你做new User($c['db'])
时,它会正常工作。