当是理想的:PHP类/ OOP:什么时候“引用”类中的类与扩展类?
class USER {
// stuff about user
}
class PROFILE extends USER {
// stuff about user's profile
}
,当是理想的:
class USER {
$id;
$profile;
function __construct($id) {
$this->id = $id;
$this->profile = new PROFILE($id);
// set profile variables
}
}
class PROFILE {
$id;
// other variables pertaining to profile
function __construct($id) {
$this->id = $id;
}
}
我觉得更舒适的第二个例子吗?有什么特别的警告我应该知道吗?
我是否应该将其中一个视为不是互斥子集而另一个是儿童?
我可以假设封装对扩展一个类来处理新协议有好处吗?如果让USER类扩展包含数据库连接函数的数据库类是否有意义? – xistva 2012-01-07 01:41:46
当然,但类似的东西需要基类提供派生类将使用的某种通用功能。如果新类完全不同,但是你想像对待第一个协议处理类那样对待它,那么你想要定义一个接口或抽象基类,这两个协议都是从中派生的。 – 2012-01-07 01:43:47
我喜欢这个解释。对于那些OOP的新手来说,问问自己是否继承的类是“父类”。例如,“是用户的个人资料?”答案是否定的,所以它不扩展USER。相反,如果它与问题“有一个”相匹配,那么它可能是一个属性/属性。例如,USER“有一个”PROFILE。 – 2012-01-07 01:44:19