[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Эмуляция перегрузки в PHP, метод __call()
romantik2011
Решил сделать симулировать перегрузку в PHP, написал вот такой код.

class A{
function t($m){
echo " ".$m;
}

function __call($x1,$x2){
function t($s1,$s2){
$s1 = $x1;
$s2 = $x2;
echo $s1.' '.$s2;
}
function t($s1,$s2,$s3){
$s1 = $x1;
$s2 = $x2;
echo $s1.' '.$s2.' '.$s3;
}

}

}


$obj = new A;
$obj->t("Каприз");
$obj->t(5,7);
$obj->t("Вася",500,"Мачо");



Результат:
Цитата

Каприз 5 Вася


Почему не выводится так?
Цитата

Каприз
5 7
Вася 500 Мачо




Спустя 5 минут, 15 секунд (30.07.2011 - 01:17) jetistyum написал(а):
потому что у тебя определен метод t, и ты его вызываешь. (метод __call будет вызыван только в случае когда пытаешься вызвать неопределенный метод )
для того чтобы использовать переменное кол-во аргументов метода используй func_get_args()

Спустя 1 минута, 38 секунд (30.07.2011 - 01:19) jetistyum написал(а):
к тому же в своей реализации ты сделал две локальные функции (что должно привести к ошибке) с одинаковыми именами в php они не могут существовать

Спустя 3 минуты, 8 секунд (30.07.2011 - 01:22) bodja написал(а):
t приняла трижды первый аргумент и его же трижды отдала.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.