我有一个主要课程
abstract class Database
{
protected $table;
public function where(array $params)
{
// ...
}
public function get()
{
// ...
}
}
然后我使用类的扩展版本:
Users extends Database
{
protected $table = 'users';
}
现在,每当我需要选择用户时,我只需使用:
$db = new Users();
$results = $db->where(['id' => 1])->get();
这很好用,但我认为专门为 id 请求创建静态快捷方式会很好,但我在统计初始化类时遇到问题。我创建了一个方法fetch
,它应该设置 Id 并使用找到的对象返回。
class Database // Had to drop abstract, since self cant be used
{
protected $table;
public static function fetch(int $id)
{
$self = new self;
$result = $self->where(['id' => $id])->get();
return $result;
}
}
但是,正如我评论的那样,self
不能在抽象中使用,所以我不得不删除它并创建一个没有table
值的新实例,因为它在父类中是空的。
任何想法如何使这项工作?