ys
отодвинутый новичок
как в preg_replace_callback() нормально "впихнуть" callback внутрь класса.
Добрый день.
Разбираю строки, используя callback функцию для составления результатов,
но не хочу "гадить" в глобальное пространство имен.
Пример извратокода:
Вот думаю, как бы избавиться от GLOBALS, чтоб не гадить за пределы класса.
Основной косяк, что в пределах create_function, собственно, свое пространство имен, а использовать явно вызов функции класса не получиться, т.к. ни $this, ну даже, на худой конец, self:: туда не пихнуть.
Как следствие, _linecallback() так-же не сдалать приватным членом класса
Rem: Вариант с preg_replace и модификатором "/e" проходил, но он не очень подходит..
Ни кто не решал подобную задачу?
Добрый день.
Разбираю строки, используя callback функцию для составления результатов,
но не хочу "гадить" в глобальное пространство имен.
Пример извратокода:
Код:
class Someclass {
public function _linecallback($arg=array()) {
..... processing ....
return $retval;
}
public function processLine($line, $regexp)
{
$GLOBALS['abcdefgh'] = $this;
$line = preg_replace_callback($regexp,
create_function(
'$matches',
'return $GLOBALS["abcdefgh"]->_linecallback($matches);'
),
$line);
}
} /* End of class Someclass */
Основной косяк, что в пределах create_function, собственно, свое пространство имен, а использовать явно вызов функции класса не получиться, т.к. ни $this, ну даже, на худой конец, self:: туда не пихнуть.
Как следствие, _linecallback() так-же не сдалать приватным членом класса

Rem: Вариант с preg_replace и модификатором "/e" проходил, но он не очень подходит..
Ни кто не решал подобную задачу?
