Исходя из фона C ++;)
Как я могу перегрузить функции PHP?
Одно определение функции, если есть аргументы, и другое, если нет аргументов? Это возможно в PHP? Или я должен использовать if else, чтобы проверить, есть ли какие-либо параметры, переданные из $ _GET и POST ?? и связать их?
php
arguments
overloading
Вамси Кришна Б
источник
источник
overloading
, чем то, что задают в вопросе. (См. Принятый ответ для получения более подробной информации.)Ответы:
Вы не можете перегружать функции PHP. Сигнатуры функций основаны только на их именах и не содержат списков аргументов, поэтому у вас не может быть двух функций с одинаковым именем. Перегрузка метода класса в PHP отличается от многих других языков. PHP использует одно и то же слово, но описывает другой шаблон.
Однако вы можете объявить переменную функцию, которая принимает переменное число аргументов. Вы должны использовать
func_num_args()
иfunc_get_arg()
для передачи аргументов, и использовать их как обычно.Например:
источник
myFunc(/*...*/)
.PHP не поддерживает традиционную перегрузку методов, однако один из способов достичь желаемого - использовать
__call
магический метод:источник
__call()
раньше. Довольно креативно (если немного многословно)! +1Чтобы перегрузить функцию, просто передайте параметр как ноль по умолчанию,
источник
overload
функции - тем не менее, вы делаете полезное замечание что читатели должны знать.Это может быть хакерским для некоторых, но я узнал об этом из того, как Cakephp выполняет некоторые функции, и адаптировал его, потому что мне нравится гибкость, которую он создает
Идея в том, что у вас есть другой тип аргументов, массивов, объектов и т. Д., Затем вы обнаруживаете, что вам передали, и идете оттуда
источник
источник
Как насчет этого:
источник
В PHP 5.6 вы можете использовать оператор splat
...
в качестве последнего параметра и покончить сfunc_get_args()
иfunc_num_args()
:Вы также можете использовать его для распаковки аргументов:
Эквивалентно:
источник
источник
PHP пока не поддерживает перегрузку. Надеюсь, что это будет реализовано в других версиях, как и другие языки программирования.
Оформить заказ этой библиотеки, это позволит вам использовать перегрузку PHP с точки зрения замыканий. https://github.com/Sahil-Gulati/Overloading
источник
К сожалению, в PHP нет перегрузки, как в C #. Но у меня есть маленькая хитрость. Я объявляю аргументы с нулевыми значениями по умолчанию и проверяю их в функции. Таким образом, моя функция может делать разные вещи в зависимости от аргументов. Ниже приведен простой пример:
источник