Вы избегаете загрязнения глобального пространства имен общим именем переменной

упрощенная версия моего кода) не работает:

<?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();
?>

Ответы на вопрос(5)

Ваш ответ на вопрос