Я хочу сделать кеш в моем ORM
class Base {
static public $v=array();
static public function createById($id){
if(!array_key_exists($id, static::$v)){
static::$v[$id] = new static; //Get from DB here. new static is just example
}
return static::$v[$id];
}
}
class User extends Base{
}
class Entity extends Base{
}
Но теперь кеш объединен
var_dump(User::createById(1));
var_dump(Entity::createById(1));
результаты
object(Model\User)#4 (0) {
}
object(model\User)#4 (0) {
}
Если я сделал
class Entity extends Base{
static public $v=array();
}
class User extends Base{
static public $v=array();
}
Я получаю то, что мне нужно:
object(Model\User)#4 (0) {
}
object(model\Entity)#5 (0) {
}
Можно ли сделать это без объявления в каждом классе?