Скажем, у меня есть следующий код, есть ли способ как-то расширить абстрактный класс для потомка и требовать другой тип аргумента в «перегруженной» функции. Я хочу вставить различные типы объектов в коллекцию через функцию добавления. В некоторых случаях я хотел бы вставить объект Error, иногда какой-то другой (XYZ) объект, и скажем, что все эти объекты расширяют один и тот же абстрактный класс, называемый Parent.
Буду признателен, если кто-нибудь скажет мне, возможно ли что-то подобное, и предложит несколько способов сделать это. Обратите внимание, что рабочий сервер, на котором я собираюсь разместить приложение, работает на php 5.6.40.
Заранее спасибо.
namespace App;
use App\Models\Parent;
abstract class Collection
{
protected $collection;
public function __construct()
{
$this->collection = array();
}
abstract public function add($key, Parent $item);
}
public class ErrorList extends Collection
{
public function __construct()
{
parent::__construct();
}
public function add($key, Error $item)
{
$this->collection[$key] = $item;
}
}
namespace App\Models;
abstract class Parent {}
public class Error extends Parent {}
public class XYZ extends Parent{}