php 中的抽象

Abstraction in php

我在 PHP 和配置 class 中几乎没有外部服务 - 一个单例 class 从 .ini 文件中获取配置列表。 对于每个 class 我在构造函数中做类似以下的事情:

$this->config = ConfigClass::getConfig() 

我是否需要声明一个抽象 class 并且只有他们在构造函数中放置该配置 class 而不仅仅是扩展 class?

例如:我也想添加记录器 我很高兴得到一些例子

摘要 classes 用作派生 class 的模板。必须在派生的 class.

中覆盖在基本抽象 class 中声明的具有抽象关键字的任何方法

php.net documentation on abstract classes

对于您的示例,这样做就足够了:

class Base {
    public function __construct()
    {
        $this->config = ConfigClass::getConfig();
    }
}

class Derived extends Base {
}

但是,请注意 - 如果您想在派生的 class' 构造函数中添加一些内容,您必须显式调用它,如下所示:

class Base {
    public function __construct()
    {
        $this->config = ConfigClass::getConfig();
    }
}

class Derived extends Base {
    public function __construct()
    {
        parent::__construct();
        // Other code
    }
}