Дженерики (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, что помогает анализаторам кода.