我有一个项目有很多类,存储为单独的文件,其中一些继承了相同的父类。有问题的类是一个设置类,它保存用户首选项等。
我想知道:让这些类使用相同信息的正确方法是什么?
例如......
我每次都使用extends
吗?或者extends
每次都执行并重新定义代码?
我是否在每个继承类$this->example = new Class();
函数中实例化新变量中的类,如__construct()
?或者这会占用更多内存吗?
我是否以某种方式在不同类中的新变量中实例化类,并通过函数参数将变量传递给继承类?或者是那种糟糕的形式?
我只是不知道!
settings.php看起来像这样:
class Settings
{
public $pref = array();
function __construct() {
$this->pref['name'] = 'John';
$this->pref['age'] = 21;
$this->pref['display_dob'] = true;
...
}
}
继承类如下所示:
class ShowPerson extends Settings
{
public function display()
{
echo $this->pref['name'], ' ';
echo $this->pref['age'], ' years old';
if ($this->pref['display_dob'] == true) {
echo ' born ' . $this->pref['birth_date'], ' ';
}
...
}
}
答案 0 :(得分:1)
没有。继承用于扩展属于同一类类的类。例如:
Animal < Mammal < Primate < Human
你做多少粒度(即你扩展多少次)取决于你的需要。
然而,重点在于,如果一个类与另一个类无关,或者它们只与它们相关,那么它们就不应该相互继承。
应该将类似设置的东西传递给类(即对象)。
所以,在你的问题中解释代码,你可以这样做:
// The settings should be created outside
$settings = new Settings;
// The settings are then provided to the new object
// Here we just pass it to the constructor, but you
// could also have something like a `useSettings()`
// method that sets it
$person = new Person($settings);
扩展代码,就像你的问题一样,会产生纠结的混乱,当你的代码成熟时,你将无法轻易解开。编写自包含的代码单元,并使用接口,您可以单独处理它们,而不用担心代码的其余部分。