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-(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Sans aucune définition d'espace de noms, toutes les classes et les fonctions
sont placées dans l'espace de noms global : comme en PHP avant que les espaces
de noms aient été introduits. En préfixant un nom avec un antislash
\, on peut demander l'utilisation de l'espace de noms
global, même dans un contexte d'espace de noms spécifique.
Exemple #1 Spécification d'espace de noms global
<?php
namespace A\B\C;
/* Cette fonction est A\B\C\fopen */
function fopen() {
/* ... */
$f = \fopen(...); // appel à fopen global
return $f;
}
?>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-Note that variables aren't part of the namespace so they are always global (or scoped to function, etc.) and can't be accessed the same way as other namespace stuff.So no: namespace Foo; $var = "hello"; echo \Foo\$var;In namespaced context the Exception class needs to be prefixed with global prefix operator.<?phpnamespace 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 } }}To define an associative array (hash) so that it is part of the namespace, instead of going into the global namespace, just declare it as const, istead of as a variable.This is handy for lookup tables, config settings, etc.// Example. Instead of writing:$my_datatypes = [ "sterility" => [ "xlsx" => [ "Sample Type", "Run Pass/Fail", "Result" ], "db" => [ "SampleType", "RunPassFail", "Result" ] ]];// ...declare the lookup table like this:const MY_DATATYPES = [ "sterility" => [ "xlsx" => [ "Sample Type", "Run Pass/Fail", "Result" ], "db" => [ "SampleType", "RunPassFail", "Result" ] ]];// ...and it will be declared within the current namespace.