Хм, что то я никак не пойму чего вы добиваетесь. en.wikipedia.org/wiki/Method_signature «In computer programming, especially object-oriented programming, a method is commonly identified by its unique method signature. This usually includes the method name, and the number, types and order of its parameters» отсюда получаем что различное число параметров, различные их типы у одноименных методов === различные методы
public abstract class someClass {
abstract public void method();
}
public abstract class anotherClass extends someClass {
abstract public void method();
}
public class main extends anotherClass {
/**
* @param args
*/
public static void main(String[] args) {
main main = new main();
main.method();
}
@Override
public void method() {
System.out.println("method() was called");
}
}
спецификацию я вряд ли найду, но отвечу вам что в любом языке программирования поддерживающем перегрузку методов, перегружаемые методы различаются числом/типом параметров, то есть сигнатурами.
сигнатуры методов не совпадают, это два разным метода с точки зрения ооп. Например то же самое в Java выглядит так:
public interface someInterface {
public void someMethod(Object object, Iterator iterator);
}
public interface anotherInterface {
public void someMethod();
}
public class fooClass implements anotherInterface,someInterface {
/**
* @param args
*/
public static void main(String[] args) {
fooClass fooClass = new fooClass();
fooClass.someMethod();
}
@Override
public void someMethod() {
System.out.println("someMethod() was called");
}
@Override
public void someMethod(Object object, Iterator iterator) {
System.out.println("someMethod(Object object, Iterator iterator) was called");
}
}
то есть классу необходимо имплементировать оба метода. Но еще раз в PHP нет перегрузки методов. Я же говорил про методы с одинаковыми сигнатурами (кажется это так называется).
«У одноимённых методов может быть разная область видимости и разный набор входных переменных.» это перегрузка методов en.wikipedia.org/wiki/Method_overloading, в PHP не реализована. А в java интерфейсы с одинаковыми методами имплементируются без проблем.
я могу вам возразить, что изготовление своего инструмента с нуля и изготовление на основе каркаса ( фреймворка) будет дороже. Но кажется это уже попахивает холиваром :)
www.php.net/manual/en/class.arrayobject.php
то есть классу необходимо имплементировать оба метода. Но еще раз в PHP нет перегрузки методов. Я же говорил про методы с одинаковыми сигнатурами (кажется это так называется).
output
Да во многих фреймворках есть подбные helper-ы.
а кажется facebook выпустил еще вот такое интересное дополнение www.facebook.com/notes/facebook-engineering/xhp-a-new-way-to-write-php/294003943919