我有一个像这样的父类模型:
namespace vendor\appname\core;
class Model
{
protected $db;
protected $session;
protected $cookie;
protected $record;
public function __construct()
{
$this->db = new Db;
$this->session = new Session;
$this->cookie = new Cookie;
$this->record = new Record;
}
}
这里我有我的孩子模型,我可以扩展基础模型并使用那里的对象
namespace vendor\appname\models;
use vendor\appname\core;
class Login extends Model
{
// here i can use simply like so
$this->db->prepare() // and so on
$this->session->set() // and so on so fourth
}
所以,如果我有100个课我应该做同样的事情“对象组成”这是一个很好的做法???注册表模式或工厂呢?有可能在这里实现吗?或依赖注入
答案 0 :(得分:1)
基于您的问题,我认为您应该阅读并研究更多关于前五个OO设计原则(SOLID)和一般责任分配软件原则(GRASP)的内容,以更多地了解设计模式和对象创建。 话虽如此,你所做的更多是继承而不是组合。为简单起见,
继承更多是“is-a”关系,例如UserModel“is-a”Model,因此Model的所有属性和方法都将成为UserModel的一部分。
聚合更像是“使用”关系。模型“使用”一个QueryBuilder和DatabaseClient。
另一方面,组合更像是“has-a”或“contains-a”关系,例如Book“contains-a”Page。
这只是一个例子,希望能让你有点清楚。了解这些以及Solid和Grasp将使您了解可用的各种设计模式。