No se puede acceder a la variable global dentro de la función

Esta (versión simplificada de mi código) no funciona:

<?php
    $sxml = new SimpleXMLElement('<somexml/>');

    function foo(){
        $child = $sxml->addChild('child');
    }

    foo();
?>

¿Por qué? Quiero acceder a$sxml porque quiero registrar errores en él sifoo() falla. @foo() se llama a sí mismo de forma recursiva para crear una lista de directorios, por lo que temo pasar la$sxml sobre sí mismo (como enfoo($sxml)) podría dañar el rendimiento.

¿Hay alguna forma de acceder$sxml dentro$foo sin pasarlo como argumento? (PHP 5.2.x +)

EDITAR ¿Qué pasa si el código se ve así, en realidad?

<?php
    bar(){
        $sxml = new SimpleXMLElement('<somexml/>');
        function foo(){
            $child = $sxml->addChild('child');
        }
        foo();
    }
    bar();
?>

Respuestas a la pregunta(5)

Su respuesta a la pregunta