Вы избегаете загрязнения глобального пространства имен общим именем переменной
упрощенная версия моего кода) не работает:
<?php
$sxml = new SimpleXMLElement('<somexml/>');
function foo(){
$child = $sxml->addChild('child');
}
foo();
?>
Почему? Я хочу получить доступ$sxml
потому что я хочу регистрировать ошибки на нем, еслиfoo()
выходит из строя.foo()
вызывает себя рекурсивно, чтобы создать список каталогов, так что я боюсь передать все$sxml
на себя (как вfoo($sxml)
) может повредить производительность.
Есть ли способ доступа$sxml
внутри$foo
не передавая это в качестве аргумента? (PHP 5.2.x +)
РЕДАКТИРОВАТЬ: Что если код на самом деле выглядит так?
<?php
bar(){
$sxml = new SimpleXMLElement('<somexml/>');
function foo(){
$child = $sxml->addChild('child');
}
foo();
}
bar();
?>