[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с методом класса
walerus
Выдает ошибку:
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 написал(а):
попробуй сменить имя функции ph34r.gif
ооо.. а метод в методе это бывает?

Спустя 17 минут, 24 секунды (10.02.2012 - 21:25) walerus написал(а):
Нет сынок Игорь_Vasinsky - это фантастика laugh.gif
Там не метод в методе, там функция в методе, она используется только для этого метода, по этому нет смысла ее объявлять глобально.

P.S. - Это спортивный интерес ), но решение хотелось бы знать )

Спустя 3 минуты, 26 секунд (10.02.2012 - 21:28) sharki написал(а):
walerus
Всё нормально работает, на нормальных серверах) Правда второй вызов метода опускается.. т.е не выполняется $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х серверах попробовал - не работает и на локале тоже blink.gif

Спустя 3 минуты, 6 секунд (11.02.2012 - 11:33) inpost написал(а):
sharki
Ты у себя включи:
-error reporting
-display errors
И увидишь, что ошибка.

walerus
А зачем? Сначала все функции идут в память, оттуда обрабатываются. Идеологически зачем быть в памяти двум одинаковым функциям? Создай её как отдельный метод и всё.
Быстрый ответ:

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