Мне интересно, если одной из ключевых особенностей языка программирования является возможность перегрузки функций с помощью аргументов. Я думаю, что это важно в контексте объектно-ориентированного программирования.
Это намеренно оставлено позади и не позволено? Или перегрузка не очень хорошая практика?
php
method-overloading
user1179459
источник
источник
Ответы:
Кто вам сказал, что PHP не поддерживает перегрузку функций? !!!
На самом деле PHP поддерживает перегрузку функций, но по-другому. Функции перегрузки PHP отличаются от функций Java:
Оформить заказ следующие блоки кода.
Функция для нахождения суммы из n чисел:
Функция для добавления двух чисел или объединения двух строк:
Объектно-ориентированный подход, включая перегрузку метода:
Ссылка: http://php.net/manual/en/language.oop5.overloading.php
В PHP перегрузка означает, что вы можете добавлять члены объекта во время выполнения, реализуя некоторые магические методы, такие как
__set
,__get
и__call
т. Д.источник
findSum(10, "steve", { 86, "2012-09-20" });
. Истинная перегрузка позволила бы новые параметры различных типов.Не полная поддержка "Традиционной перегрузки", только частичная .
Примечание: вторая часть этого определения обычно связана со статически типизированными языками программирования, которые выполняют проверку типов и / или проверку на соответствие , чтобы выбрать правильное объявление. PHP не является статически типизированным языком, он динамический и использует слабую типизацию .
PHP ПОДДЕРЖКА :
ДА, предоставляет возможность вызывать несколько методов с одинаковыми именами, но разными количествами . Смотрите func_get_args и @rajukoyilandy ответ, мы можем использовать
f(x)
иf(x,y)
.ДА, предоставляет возможность вызывать несколько методов с одинаковыми именами, но разными типами . Само по себе внутреннее использование gettype в методе.
НЕ предоставляет возможность объявлять несколько методов с одним и тем же именем, но разными количествами . Это потому что мы можем звонить
f(x)
иf(x,y)
с одной и той жеf
декларацией.НЕ предоставляет возможность объявлять несколько методов с одинаковыми именами, но разными типами . Это потому, что компилятор PHP должен интерпретировать
f($integer,$string)
как ту же функцию, что иf($string,$integer)
.См. Также документацию по перегрузке PHP5 для объяснения «нетрадиционной перегрузки».
источник