Forum Webscript.Ru

Программирование => PHP => Тема начата: maxbiz от 30 Декабря 2002, 22:06:49

Название: Глубоко в объекты...
Отправлено: 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->мя_функции",$где_искать)

что-то ничего хорошего не принесли...
Название: Глубоко в объекты...
Отправлено: ThE0ReTiC от 30 Декабря 2002, 22:36:40
Господи, когда ж вы читать внимательно начнете
сомментарии в мануале на эту функию:
Цитировать

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
Название: Глубоко в объекты...
Отправлено: maxbiz от 30 Декабря 2002, 23:06:14
Спасибо!
Название: Глубоко в объекты...
Отправлено: ThE0ReTiC от 31 Декабря 2002, 02:08:16
any time for :beer: ;)