вложенная функция. это бага или фича?

martovsky

Guest
вложенная функция. это бага или фича?

иммем код:

class foo {

function bar() {
function foo() {
return true;
}
}

}

$foo = new foo();

$foo->bar();
$foo->bar();

результат:

Fatal error: Cannot redeclare foo() (previously declared in is_bug.php:X) in is_bug.php on line X


это бага или фича? по чути функция, объявленная внутри функции класса должна прибиваться после исполенения этой функции класса, а тут егор...

php 4.3.6
 

fixxxer

К.О.
Партнер клуба
внутри класса не стоит вообще пытаться объявлять вложенные функции.
эта фича никогда как следует не работала и, в принципе, на х.й и не нужна (так считаю не один я, а и многие разработчики php).
 

Screjet

Новичок
Любопытно, почему эту фитчу не выкинули из языка? Все равно от нее толку никакого, или это связно както с create_function ?
 

_RVK_

Новичок
Ага. Это значит "фича", но она с "багом". Честно говоря ниразу не требовалась такая "фича/бага".
Если мне нужна функция в методе, я делаю еще один метод и обозначаю его как приватный (коментарием например).
 

martovsky

Guest
внутри класса не стоит вообще пытаться объявлять вложенные функции.
эта фича никогда как следует не работала и, в принципе, на х.й и не нужна (так считаю не один я, а и многие разработчики php).
оки. хорошо. пишу вот я какой-нибудь custom compare function для uksort например. функцию класса загнать параметром в uksort у меня что-то не получилось.

дык чего, писать в отдельное файло эту функцию и инклюдить?
 

Gas

может по одной?
Смотри коментарии в мане к этой ф-ции [m]uksort[/m]. Там всё написано.
 

Screjet

Новичок
Эх! А я то думал ты занимаешься отладкой исходного кода в пхп.. :(

Посмотри метатип callback в мане.

А связана эта фитча с include|require(_once). (Сразу не дошло)
 

fixxxer

К.О.
Партнер клуба
Не выкинули потому, что вне классов все прекрасно работает. И в некоторых скриптах используется.

Внутри класса, по хорошему, должен быть parse error.
 

tony2001

TeaM PHPClub
>функцию класса загнать параметром в uksort у меня что-то не получилось.
[m]usort[/m] - в конце и пример есть.

-~{}~ 22.10.04 18:28:

Screjet
>А связана эта фитча с include|require(_once). (Сразу не дошло)
угу. на 100% не уверен, но почти точно.
 
Сверху