ситуация: зависимо, например, от типа первого аргумента метод меняет поведение например: PHP: <? public function method ($arg1, $arg2, $arg3 = null) { if (is_callable($arg1)) { $callback = $arg1; $arguments = $arg2; } else { $value = $arg1; $param = $arg2; $flags = $arg3; } } в Джаве для этго есть отличный способ, что-то типа такого: PHP: <? public function method (Closure $callback, Array $arguments) { } public function method (String $value, Array $params, Int $flags) { } и оно само определит, какой метод вызвать. в пыхе, понятно, такого нету. еще бывает что-то типа такого часто: PHP: <? public function method ($valueORkey, $possValue = null) { $key = is_null($possValue) ? null : $valueORKey; $val = is_null($possValue) ? $valueORKey : $possValue; } Для примера — та же встроенная функция implode. Понятное дело, что средствами языка подобное не реализовать, или будет не очень красиво, но меня интересует больше другое — интерфейсы, а не реализация. Хотя бы, чтобы было IDE воспринимали и отображали корректно например: Код (Text): meth[ctrl-space] => (всплывающая подсказка) method (Closure $callback, Array $arguments) { } method (String $value, Array $params, Int $flags) { }
Не совсем понятно, в чём суть вопроса. Перегрузки методов в пхп нет и это порой дико напрягает, но что есть то есть.
я хочу сделать что-то типа такого: PHP: <? public function method (Closure $callback, Array $arguments) { } public function method (String $value, Array $params, Int $flags) { } И я знаю, что в пхп этого нету, потому мне, хотя бы, описать так в пхпДок, а сделать как показано в первом посте первого примера
Такая возможность была бы замечательной для чего, для IDE? У джавы такая возможность есть потому что нету динамических типов. И перегрузка методов - фактически костыль.
TheShock а чем не то? во-втором случае как раз показываются два метода с одинаковым именем, но разными типами аргументов.
iliavlad, допустим, я делаю библиотеку, которую собираюсь выложить оупенсорс. у меня в ней есть класс A и в нём нужно сделать два метода с разными параметрами. понимаешь?