Собственно, всё гениальное просто.
Попробую с Лимпом развить данную темку, хоть и сам в категории "начинающие". =)
---------------------------------
Итак, поговорим о перегрузке методов. Всем, знающим пых, известно, что функции нельзя написать вот так:
function MyFunc();
function MyFunc($a);
function MyFunc($a, $b);
function MyFunc($a, $b, $c);
по причине того, что нельзя задавать одно и то же имя разным функциям. Но что делать, если очень надо принимать в функцию разные данные. То такие, то сякие.
Тут на помощь приходит ООП. Есть там такая штучка магическая, называется __call, он запускается автоматически, когда мы вызываем метод которого нет.
Если метод (он же функция, если вне класса) не инициализирован, то с помощью __call мы можем принять имя функции и её свойства и делать с ними всё, что душе угодно. Эдакое "эмулирование" перегрузки функций, что в пыхе невозможно.
Делается это так:
//Создаём класс
class name {
//В $name придёт имя функции, а в $array все значения в формате массива
function __call($name, $array){
//Внутри этой функции мы уже можем делать с полученными данными всё, что захотим
}
}
Теперь, если мы вызовем несуществующую функцию как объект, с необходимыми свойствами, то этот момент будет у нас "под контролем".
//Создаём класс
class name {
//В $name придёт имя функции, а в $array все значения в формате массива
function __call($name, $array){
//Внутри этой функции мы уже можем делать с полученными данными всё, что захотим. Можем например вывести ошибку.
echo "Функция $name не существует!!!";
}
}
//Вызываем метод, которого нет, автоматически вызывается __call
$something->funcTiOn('Gary', '26', 'Охранник');
Метод __call можно использовать, например, для самоконтроля. Все мы человеки и можем ошибиться (особенно если делать сайт на ядре, классах и куче функций как ДжонЦМС). Очень легко запутаться или опечататься, в случае ошибочного написания какого либо метода мы узнаем где "косяк".
Так же если работает команда. В таком случае даже классы лучше использовать "абстрактные", создавать "интерфейсы".