Код: Выделить всё
interface MyInterface
{
public function myMethod(int $a);
}
Код: Выделить всё
class MyClass implements MyInterface
{
public function myMethod(int|string $a) {}
}
В PHP перегрузка методов достигается за счет использования типов объединения, как я сделал выше.
Среда выполнения PHP поддерживает этот подход (проверено на версиях 8.1, 8.2 и 8.3).
Мой вопрос: приемлемо ли это? Нарушаю ли я этим какие-либо передовые методы PHP?
Я не уверен, нарушает ли это принцип подстановки Лискова. Классы, ожидающие реализации MyInterface, по-прежнему должны работать корректно. Однако если одна часть приложения использует MyClass, а затем заменена другим классом, обеспечивающим «чистую» реализацию MyInterface, существует риск поломки приложения.
С моей точки зрения, поскольку я могу выбирать, какую реализацию интерфейса использовать в своем приложении, это должно быть нормально. Однако я хочу быть уверен, что не создаю никаких потенциальных проблем.
Подробнее здесь: https://stackoverflow.com/questions/793 ... d-practice
Мобильная версия