Forum Webscript.Ru
Программирование => PHP => Тема начата: maxbiz от 30 Декабря 2002, 22:06:49
-
У меня есть объект, а в нем метод со вложенной в метод
функцией, которая нужна только в этом методе.
Вопрос такой:
Как в этой вложенной функции обращаться к свойствам объекта? Через $this-> не работает. Через параметры функции передать ничего не могу, так как в моей ситуации
может быть только один параметр и он занят под другое.
Речь идет о функции preg_replace_callback(), которая ищет совпадение по рег.выражению и если находит, то вызывает
функцию, передает ей результат совпадения, а затем по return подставляет на место найденного возвращаемое из ф-ции значение. Очень полезная штука!
Например :
preg_replace_callback("/^mama$/i","имя функции",$where_search)
Либо, как можно заставить читать эту функцию метод объекта?
Попытки типа:
preg_replace_callback ("регулярное выражение","\\$this->мя_функции",$где_искать)
или тем более:
preg_replace_callback ("регулярное выражение","$this->мя_функции",$где_искать)
что-то ничего хорошего не принесли...
-
Господи, когда ж вы читать внимательно начнете
сомментарии в мануале на эту функию:
you need to set the callback to a method of a class from inside the same class, use:
preg_replace_callback(pattern, array($this, \'method_name\'), subject)
First, sorry for my elementary english.
On my box the
preg_replace_callback( "/(\\w+)/", array( $this, callback_method ), $string)
seems to works properly but, after the execution the object seems to have lost the datas added from the callback method.
Everyting works well if the $this parameter is passed to callback method as reference like
preg_replace_callback( "/(\\w+)/", array( &$this, callback_method ), $string)
Also I noted that the compiler take the reference without any warning message regards \'Call-time pass-by-references deprecated\'.
Ciao.
http://www.php.net/manual/en/function.preg-replace-callback.php
-
Спасибо!
-
any time for :beer: ;)