Fatal error: Cannot redeclare inner() (previously declared in C:\xampp\htdocs\ebota\index.php:6) in C:\xampp\htdocs\ebota\index.php on line 6
Почему ошибка, если функция создается локально ?
<?php
Class test {
function method($param) {
function inner($p) {
return 2 + $p;
}
$x = inner($param);
return $x;
}
}
$ex = new test;
$g = $ex->method(2);
echo $g."<br>";
$v = $ex->method(3);
echo $v."<br>";
Спустя 1 минута, 38 секунд (10.02.2012 - 21:07) Игорь_Vasinsky написал(а):
ооо.. а метод в методе это бывает?
Спустя 17 минут, 24 секунды (10.02.2012 - 21:25) walerus написал(а):
Нет сынок Игорь_Vasinsky - это фантастика
Там не метод в методе, там функция в методе, она используется только для этого метода, по этому нет смысла ее объявлять глобально.
P.S. - Это спортивный интерес ), но решение хотелось бы знать )
Там не метод в методе, там функция в методе, она используется только для этого метода, по этому нет смысла ее объявлять глобально.
P.S. - Это спортивный интерес ), но решение хотелось бы знать )
Спустя 3 минуты, 26 секунд (10.02.2012 - 21:28) sharki написал(а):
walerus
Всё нормально работает, на нормальных серверах) Правда второй вызов метода опускается.. т.е не выполняется $v = $ex->method(3);
Всё нормально работает, на нормальных серверах) Правда второй вызов метода опускается.. т.е не выполняется $v = $ex->method(3);
Спустя 1 минута, 48 секунд (10.02.2012 - 21:30) Игорь_Vasinsky написал(а):
аа..ну яж без понятия, но мимо пройти не смог.
Спустя 1 час, 24 минуты, 59 секунд (10.02.2012 - 22:55) Winston написал(а):
Ну если PHP > 5.3 то можно использовать анонимную ф-ю
Свернутый текст
Class test {
function method($param) {
$foo = function($p) {
return 2 + $p;
};
$x = $foo($param);
return $x;
}
}
$ex = new test;
$g = $ex->method(2);
echo $g."<br>";
$v = $ex->method(3);
echo $v."<br>";
Спустя 5 минут, 21 секунда (10.02.2012 - 23:00) walerus написал(а):
Цитата (sharki @ 10.02.2012 - 18:28) |
walerus Всё нормально работает, на нормальных серверах) Правда второй вызов метода опускается.. т.е не выполняется $v = $ex->method(3); |
sharki - Оно то "опускается", но и НЕ выполняется, подавление ошибок не найс вроде как )
Спустя 7 часов, 31 минута, 47 секунд (11.02.2012 - 06:32) sharki написал(а):
walerus
Я скопипастил твой код, и он у меня работает на сервере (юникс и бла бла..).
Я скопипастил твой код, и он у меня работает на сервере (юникс и бла бла..).
Спустя 4 часа, 57 минут, 47 секунд (11.02.2012 - 11:30) walerus написал(а):
sharki Какое результат выдается на дисплей ?
Что то я на 4х серверах попробовал - не работает и на локале тоже
Что то я на 4х серверах попробовал - не работает и на локале тоже
Спустя 3 минуты, 6 секунд (11.02.2012 - 11:33) inpost написал(а):
sharki
Ты у себя включи:
-error reporting
-display errors
И увидишь, что ошибка.
walerus
А зачем? Сначала все функции идут в память, оттуда обрабатываются. Идеологически зачем быть в памяти двум одинаковым функциям? Создай её как отдельный метод и всё.
Ты у себя включи:
-error reporting
-display errors
И увидишь, что ошибка.
walerus
А зачем? Сначала все функции идут в память, оттуда обрабатываются. Идеологически зачем быть в памяти двум одинаковым функциям? Создай её как отдельный метод и всё.