Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   PHP ООП и вложенные функции (https://javascript.ru/forum/server/4019-php-oop-i-vlozhennye-funkcii.html)

Tim 14.06.2009 19:59

PHP ООП и вложенные функции
 
Здраствуйте, помогите со следующим кодом:

class nameClass {

	public $variable = 5;

	function metod_1 ()
	{
		function metod_2 ()
		{
			// ...
		}
	}
}


Как получить доступ к переменной variable из вложенной функции metod_2 при условии, что эта переменная не передаётся в параметрах при вызове функции?

Такая ситуаци возникла при работе с шаблонами, когда вместо строки замены задаётся функция обратного вызова.

Например функция metod_1 осуществляет поиск и замену по регулярному выражению. Вместо строки замены стоит функция обратного вызова (metod_2), которая и формирует строку замены, при этом она должна знать некоторые параметры класс.

Gvozd 14.06.2009 20:17

вообще-то в PHP еще нету нормальной реализации замыканий
http://ru.wikipedia.org/wiki/Зам...ни е)#PHP
это для версий от 5.3.0 планируется
текущая последняя 5.2.9

Tim 14.06.2009 22:13

Спасибо!

P.S.: Два дня тупил сидел:wacko:

x-yuri 15.06.2009 05:57

и вложенные функции использовать не стоит: ты пробовал вызвать method_1 2 раза?

Tim 15.06.2009 07:37

Fatal error: Cannot redeclare metod_2()

Ну вот, попробовал... Одно радует - хоть что-то новое узнал...

Tim 15.06.2009 07:48

Я этот же вопрос на форуме про php задал. Вот что пишут:

"Как ни печально, в PHP нет вложенных функций и здесь вы просто при вызове metod_1 определили глобальную metod_2"

Провёл эксперимент. Оказывается, что metod_2 действительно доступен из любого места программы.

x-yuri 15.06.2009 08:01

да, наверное, можно считать, что функции создаются по мере выполнения сценария, как другие операторы (выполняются)... можно, например, функцию в if засунуть


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