Автор Тема: Глубоко в объекты...  (Прочитано 2457 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн maxbiz

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.extro.com.ua
Глубоко в объекты...
« : 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->мя_функции",$где_искать)

что-то ничего хорошего не принесли...
« Последнее редактирование: 30 Декабря 2002, 22:23:21 от maxbiz »

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Глубоко в объекты...
« Ответ #1 : 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
AS IS...

Оффлайн maxbiz

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 37
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.extro.com.ua
Глубоко в объекты...
« Ответ #2 : 30 Декабря 2002, 23:06:14 »
Спасибо!

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Глубоко в объекты...
« Ответ #3 : 31 Декабря 2002, 02:08:16 »
any time for :beer: ;)
AS IS...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28