Zaplanowałem sobie taki mały systemik logowań zdarzeń. Chciałem oprzeć go o klase abstrakcyjną + interfejs, a przy okazji chciałem użyć do tego celu singletona, aby późniejsze wywołanie mogło sprowadzić się do:
<?php dbLog::write()->error(); dbLog::write()->warning(); ?>
Oto co próbowałem zrobić, jednak to nie działa, dostaję błąd:
Kod
Fatal error: Can't inherit abstract function logInterface::write() (previously declared abstract in log) in C:\xampp\htdocs\test.php on line 10
interface logInterface { public function error(); public function warning(); public function notice(); } abstract class log implements logInterface{ protected function __construct(){} protected function __clone(){} abstract public function error(); abstract public function warning(); abstract public function notice(); } class fileLog extends log implements logInterface { } } class dbLog extends log implements logInterface { } }
Myślałem o przeniesieniu metody write() do klasy abstrakcyjnej log, zrobienie z niej static (czyt final static)
Ewentualnie mógłbym zrobić w każdej metodzie error, warning, notice odwoływanie się do singletona tak, żeby użycie uprościć do
<?php dbLog::error(); fileLog::notice(); ?>
Macie jakieś pomysły jak to rozwiązać?