Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Передать переменную из функции во вложенную функцию (https://javascript.ru/forum/server/28844-peredat-peremennuyu-iz-funkcii-vo-vlozhennuyu-funkciyu.html)

Раед 05.06.2012 00:33

Цитата:

Сообщение от devote
скорее всего глобальной, вы можете это проверить попробовав вызвать ее вне класса

Да, глобальной.
devote, а можно передать в preg_replace_callback метод класса

devote 05.06.2012 00:47

Цитата:

Сообщение от Раед
devote, а можно передать в preg_replace_callback метод класса

ну только примерно так:

class Test {

    private static function func( $match ) {
        print_r( "executed" );
		return "";
    }

	public function go( $rpl ) {
		return preg_replace_callback( "/a/", "Test::func", $rpl );
	}
}

$a = new Test();

$a->go( "testa" );

Раед 05.06.2012 01:03

Цитата:

Сообщение от Раед
а можно передать в preg_replace_callback метод класса

Извините, не так выразился, метод объекта, так чтобы был доступен $this

devote 05.06.2012 01:14

Цитата:

Сообщение от Раед
Извините, не так выразился, метод объекта, так чтобы был доступен $this

Ну сделайте сохранение ссылки на экземпляр, что-то вроде этого:
class Test {

	private static $instance = null;
 
    private static function func( $match ) {

		// тут работаем с экземпляром переданным через instance
        $self = Test::$instance;

        return $self->text;
    }

    public function go( $rpl ) {
		// сохраним ссылку на экземпляр
		Test::$instance = $this;

        return preg_replace_callback( "/a/", "Test::func", $rpl );
    }
}

Раед 05.06.2012 01:37

devote,
Огромное спасибо за помощь :thanks:

devote 05.06.2012 01:40

не за что, спрашивайте если что.

9xakep 05.06.2012 08:55

Раед,
Я с таким тоже сталкиваюсь, и пардон, не тра*аю себе мозги, а добавляю переменную в сессию.

devote 05.06.2012 13:37

Цитата:

Сообщение от 9xakep
Я с таким тоже сталкиваюсь, и пардон, не тра*аю себе мозги, а добавляю переменную в сессию.

не в каждом проекте используют сессии, и не забывайте о том что он пишет класс, а класс зависящий от сессий не совсем хорошо.


Часовой пояс GMT +3, время: 18:11.