Notice: file_put_contents(): Write of 18318 bytes failed with errno=28 No space left on device in /var/www/tgoop/post.php on line 50
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter@phpproglib P.5503
PHPPROGLIB Telegram 5503
🧠 Ковариантность и контравариантность в PHP — кратко и по сути

Эти термины звучат сложно, но суть у них простая. Разработчики используют их идеи постоянно — просто не всегда знают, как это называется. Ниже — простое объяснение с примерами.

🔍 Что это такое?

Ковариантность — когда метод возвращает более конкретный тип, чем у родителя.

Контравариантность — когда метод принимает менее конкретный тип, чем у родителя.

Ковариантность (return types)
PHP поддерживает ковариантность только для возвращаемых значений. Примеры:

float|intint

BaseClassChildClass

ExportableExportable&Cacheable

Можно «сузить» возвращаемый тип в дочернем классе — и это будет валидно.

Контравариантность в return'ах
PHP не позволяет делать возвращаемый тип менее конкретным.
Например, int → float|int — вызовет ошибку.

Контравариантность (параметры)
А вот с параметрами всё наоборот — здесь PHP позволяет делать типы шире:

arrayarray|Collection

Traversable&CollectionCollection

EloquentCollectionCollection

Такой подход делает методы более гибкими при переопределении.

Ковариантность в параметрах
Нельзя в параметрах делать тип более конкретным, чем у родителя. Это приведёт к ошибке.

🚫 Конструкторы — отдельная история
Ковариантность и контравариантность на конструкторы не влияют. У них своя логика, и они не наследуются как обычные методы.

👉 Читать статью
👍15



tgoop.com/phpproglib/5503
Create:
Last Update:

🧠 Ковариантность и контравариантность в PHP — кратко и по сути

Эти термины звучат сложно, но суть у них простая. Разработчики используют их идеи постоянно — просто не всегда знают, как это называется. Ниже — простое объяснение с примерами.

🔍 Что это такое?

Ковариантность — когда метод возвращает более конкретный тип, чем у родителя.

Контравариантность — когда метод принимает менее конкретный тип, чем у родителя.

Ковариантность (return types)
PHP поддерживает ковариантность только для возвращаемых значений. Примеры:

float|intint

BaseClassChildClass

ExportableExportable&Cacheable

Можно «сузить» возвращаемый тип в дочернем классе — и это будет валидно.

Контравариантность в return'ах
PHP не позволяет делать возвращаемый тип менее конкретным.
Например, int → float|int — вызовет ошибку.

Контравариантность (параметры)
А вот с параметрами всё наоборот — здесь PHP позволяет делать типы шире:

arrayarray|Collection

Traversable&CollectionCollection

EloquentCollectionCollection

Такой подход делает методы более гибкими при переопределении.

Ковариантность в параметрах
Нельзя в параметрах делать тип более конкретным, чем у родителя. Это приведёт к ошибке.

🚫 Конструкторы — отдельная история
Ковариантность и контравариантность на конструкторы не влияют. У них своя логика, и они не наследуются как обычные методы.

👉 Читать статью

BY Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter


Share with your friend now:
tgoop.com/phpproglib/5503

View MORE
Open in Telegram


Telegram News

Date: |

Members can post their voice notes of themselves screaming. Interestingly, the group doesn’t allow to post anything else which might lead to an instant ban. As of now, there are more than 330 members in the group. More>> To edit your name or bio, click the Menu icon and select “Manage Channel.” End-to-end encryption is an important feature in messaging, as it's the first step in protecting users from surveillance. ‘Ban’ on Telegram
from us


Telegram Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
FROM American