Дженерики в PHP

Дженерики (Generics) — это механизм программирования, который позволяет создавать классы, методы и функции, которые могут работать с различными типами данных без явного указания конкретного типа данных во время компиляции.

В PHP дженерики не поддерживаются в том виде, в котором они есть, например, в языках Java и C#. Однако в PHP 7.0 была добавлена возможность использовать типы возвращаемых значений и аргументов функций и методов. Это позволяет создавать функции и методы, которые будут работать только с определенными типами данных.

Таким образом, хотя PHP и не поддерживает дженерики в том виде, в котором они есть в других языках программирования, можно использовать типизацию возвращаемых значений и аргументов, чтобы добиться похожих результатов.

Код ниже невозможен в PHP:

class Collection<Type> extends ArrayObject
{
    public function offsetGet(mixed $key): Type 
    { /* … */ }

    // …
}

Но указание <Type> как раз упростило бы разработку и поддержку кода и мы могли бы писать так:

$users = new Collection<User>();
$slugs = new Collection<string>();

Но это маловероятно. Радует, что подобные вещи можно указывать в doc blocks, что помогает анализаторам кода.