В java есть такое понятие как перегрузка метода. Это значит что мы может написать один несколько методов с одним именем, которые будут отличаться кол-вом или типом входящих данных.
Например:
String getName(String fullname) {};
String getName(int id) {};
String getName(User user) {};
String getName(String firstName, String lastName) {};
В зависимости от того что мы передадим на вход, будет вызван метод подходящий по параметрам.
Программируя на PHP такого я не смог провернуть. Как минимум высыпается предупреждение
Declaration of Framework\Widget\Icon::get() should be compatible with Framework\Base\Widget::get()
Гугления по словам перегрузка приводит к какой-то псевдоперегрузке
php.net/manual/ru/language.oop5.overloading.php, которую называют магией.
Вопрос собственно в том можно ли сделать например наследник-класса с методом, у которого кол-во параметров отличается от родителя и не получить предупреждение. Отключить вывод предупреждений не советовать :)
class A {
public function message ($user, $message) {}
}
class A extends B {
public function message ($user_id, $message, $type) {}
}