【发布时间】:2019-05-21 01:07:17
【问题描述】:
为什么不能在子类中隐藏构造函数?
我收到以下异常:
致命错误:CIS\Logger\WPLogger::__construct() 的访问级别必须 公开(如在 Katzgrau\KLogger\Logger 类中) /builds/r2o/website/wp-content/mu-plugins/toolsets/lib/cis-logger/src/WPLogger.php 在第 12 行
超类代码(来自外部库):
public function __construct($logDirectory, $logLevelThreshold = LogLevel::DEBUG, array $options = array()) { // ...
}
WPLogger.php 代码(子类):
private function __construct(string $logDirectory, string $logLevelThreshold = LogLevel::DEBUG, array $options = array()) {
parent::__construct($logDirectory, $logLevelThreshold, $options);
// ... some actions
}
}
public static function getInstance(string $logFileRelative = self::DEFAULT_LOG_NAME, string $logLevelThreshold = LogLevel::DEBUG, array $options = array()) {
// ...
}
我不想用new 实例化这个特殊的子类。由于某些原因,我希望使用getInstance() 静态创建它。我怎样才能做到这一点?
【问题讨论】:
-
超类实现接口了吗?
-
没有:
extends AbstractLogger但没有接口。
标签: php class oop inheritance constructor