php – Доступ к переменным в функции, определенной в другой функции?

Я пытаюсь получить переменные, которые я определил во время функции из другой функции, которую я вызывал в этой функции, например:

$thevar = 'undefined'; Blablahblah(); echo $thevar; (should echo blaaah) function Blahedit(){ echo $thevar; (should echo blah) $thevar = 'blaaah'; } function Blablahblah(){ global $thevar; $thevar = 'blah'; Blahedit(); } 

Я хочу знать, есть ли другой способ сделать это без передачи параметров в Blahedit (), get_defined_vars дает мне vars внутри функции not $ thevar … и вызов глобального $ thevar просто даст мне предыдущую неотредактированную версию.

Пожалуйста помоги ):

Вы можете использовать это: http://php.net/manual/en/reserved.variables.globals.php

или лучше посмотреть на oop

http://php.net/manual/en/language.oop5.php http://php.net/manual/en/language.oop5.basic.php

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

 $thevar = 'undefined'; Blablahblah($thevar); echo $thevar; function Blahedit(&$thevar){ echo $thevar; $thevar = 'blaaah'; } function Blablahblah(&$thevar){ $thevar = 'blah'; Blahedit($thevar); } 

Использование глобальных функций внутри функции считается плохой практикой . Тем не менее, передача большого количества переменных по ссылке также не является хорошим стилем.

Если вы хотите, чтобы ваш код работал так, как вам нужно, вы должны добавить global $thevar к своей функции редактирования:

 function Blahedit(){ global $thevar; echo $thevar; (should echo blah) $thevar = 'blaaah'; } 

Просто глобальный $ thevar внутри blahedit.

 function Blahedit(){ global $thevar; echo $thevar; //(should echo blah) $thevar = 'blaaah'; }