1
我有一個基類叫BaseRecurring
。如何編寫由PHP中的子類使用的接口和基類?
它呼籲_checkCurrentMonth
的_checkCurrentMonth
內受保護的功能,
我的BaseRecurring
類內部代碼是
protected function _checkNextMonth($type, $startDate = 1, $endDate = 1)
{
$incrementToFirstDay = $startDate - 1;
$incrementToLastDay = $endDate - 1;
$startDate = new \DateTime('first day of this month');
$endDate = new \DateTime('first day of next month');
if ($incrementToFirstDay > 0 || $incrementToLastDay > 0) {
// e.g. if we want to start on the 23rd of the month
// we get P22D
$incrementToFirstDay = sprintf('P%dD', $incrementToFirstDay);
$incrementToLastDay = sprintf('P%dD', $incrementToLastDay);
$startDate->add(new \DateInterval($incrementToFirstDay));
$endDate->add(new \DateInterval($incrementToLastDay));
}
$this->checkMonth($type, $startDate, $endDate);
}
的問題是,我不希望基類定義checkMonth
的實現。我想讓子類實現checkMonth
方法。
我打算有一個名爲CheckMonthInterface
的接口,它將明確聲明一個名爲checkMonth
的方法。
那麼,我有基類實現CheckMonthInterface
,然後保持該方法爲空?
還是我有基類不執行CheckMonthInterface
然後有子類實現呢?
示例代碼嗎? –
如果你注意到了,我實際上在基類中有一個完全實現的函數。我不認爲抽象類允許這樣做。或者我錯了? –
抽象類不能實例化(PHP致命錯誤:'不能實例化抽象類'),但可以(通常應該)具有方法,該實現將可供兒童使用。 – Axalix