Снукер с абстрактным – PHP

У меня есть абстрактный класс, который я наследую от:

abstract class Test { public function GetTests() { } } 

и у меня есть конкретный вопрос, который я использовал для реализации абстрактных классов большую часть времени:

 class Concrete extends Test { // No problemmos } 

Недавно мне пришлось реализовать другую версию метода GetTests, и на самом деле я хотел перезаписать его, поскольку он встроен во всю мою маршрутизацию:

 class Concrete extends Test { public function GetTests( $newArgument ) { // notice $newArgument } } 

Однако я получаю это сообщение об ошибке:

 Declaration of Concrete::GetTests() should be compatible with Test::GetTests() 

Помимо копирования всех функций из абстрактного класса для этого конкретного, хотя мне нужно только реализовать этот метод по-разному … Есть ли способ обойти это?

Я понимаю, что мог бы:

 abstract class Test { abstract public function GetTests(); } 

Но вот почему я снукер, потому что у меня больше нет возможности изменять, как реализуется базовый класс Test … doh! … Если мне действительно не нужно …


Спасибо всем отличным ответам …

Я решил сам снукер (это будет больно, но это будет стоить того), и я создам экземпляр класса Test внутри класса Concrete, реализую конкретные версии всех методов класса Test, а затем внутри их просто вызывается экземпляр Тест-класс … Это означает, что в будущем (или даже сейчас) я просто не могу назвать эту функцию …

Для контекста:

 /* no longer abstract */ class UnitOfWorkController { public function GetUnits() { // Implementation return View::make(...); } } 

а также…

 class SomethingController /* no longer extends the UnitOfWorkController */ { private $unitOfWorkController; public function __Construct() { $this->unitOfWorkController = new UnitOfWorkController(); } public function GetUnits() { return $this->unitOfWorkController->GetUnits(); // or I could just implement my own junk } }