Can't access global variable inside function
You have to pass it to the function:
<?php $sxml = new SimpleXMLElement('<somexml/>'); function foo($sxml){ $child = $sxml->addChild('child'); } foo($sxml);?>
or declare it global:
<?php $sxml = new SimpleXMLElement('<somexml/>'); function foo(){ global $sxml; $child = $sxml->addChild('child'); } foo();?>
If the variable isn't global but is instead defined in an outer function, the first option (passing as an argument) works just the same:
<?php function bar() { $sxml = new SimpleXMLElement('<somexml/>'); function foo($sxml) { $child = $sxml->addChild('child'); } foo($sxml); } bar();?>
Alternatively, create a closure by declaring the variable in a use
clause.
<?php function bar() { $sxml = new SimpleXMLElement('<somexml/>'); function foo() use(&$xml) { $child = $sxml->addChild('child'); } foo(); } bar();?>
You need to explicitly invite the global variable into the functions scope:
function foo(){ global $sxml; $child = $sxml->addChild('child');}
Use the global keyword to declare $sxml inside your function.
<?php $sxml = new SimpleXMLElement('<somexml/>'); function foo(){ global $sxml; $child = $sxml->addChild('child'); } foo();?>