по уму что-то такое должно быть:
class Category extends Model{
public $table = 'category';
public $db = false;
// вариант DI - передаем $db в конструктор
public function __construct($db){
$this->db = $db;
}
//или вариант инициализации по id
public function __construct($id=false){
parent::__construct($id);
// в базовом классе модели берем $db из регистра и присваиваем $this->db
}
}
$categories = new Collection(new Category());
$categories = $categories->getArrayOfObjects();
Сразу скажу что не очень жалую вариант с DI, так как либо приходится делать синглтон, либо в каждом контроллере делать новый $db(что имхо бред), либо так же совать дб в регистри и тащить его при инициализации каждого объекта. Минус второго способа - IDE "не видит" как подключен дб и интелисенс и прочие плюшки не работают.