Я пытаюсь получить переменные, которые я определил во время функции из другой функции, которую я вызывал в этой функции, например:
$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'; }