Espacio global

(PHP 5 >= 5.3.0)

Sin ninguna definición de espacios de nombres, todas las definiciones de clases y funciones son colocadas en el espacio global, como si lo estuvieran antes de que PHP soportara los espacios de nombres. Prefijar un nombre con \ especificará que el nombre es requerido desde el espacio global incluso en el contexto del espacio de nombres.

Ejemplo #1 Usar la especificación de espacio global

<?php
namespace A\B\C;

/* Esta función es A\B\C\fopen */
function fopen() { 
     
/* ... */
     
$f = \fopen(...); // llamar a fopen global
     
return $f;

?>

add a note add a note

User Contributed Notes 3 notes

up
10
routinet
4 years ago
Included files will default to the global namespace.
<?php
//test.php
namespace test {
  include
'test1.inc';
  echo
'-',__NAMESPACE__,'-<br />';
}
?>

<?php
//test1.inc
 
echo '-',__NAMESPACE__,'-<br />';
?>

Results of test.php:

--
-test-
up
0
nobody at example dot com
3 months ago
In namespaced context the Exception class needs to be prefixed with global prefix operator.

<?php

namespace hey\ho\lets\go;

class
MyClass
{
    public function
failToCatch()
    {
        try {
           
$thing = somethingThrowingAnException();
        } catch (
Exception $ex) {
             
// Not catched
       
}
    }

    public function
succeedToCatch()
    {
        try {
           
$thing = somethingThrowingAnException();
        } catch (\
Exception $ex) {
             
// This is now catched
       
}
    }

}
up
-11
xmarcos at gmail dot com
3 years ago
That's the expected behavior, you have to declare the namespace at the top of the file to "extend" it.

If you include a global namespaced file, it will operate on the global namespace.
To Top