array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'language.namespaces.dynamic.php', 1 => 'Namespaces e recursos de linguagem dinâmica', ), 'up' => array ( 0 => 'language.namespaces.php', 1 => 'Namespaces', ), 'prev' => array ( 0 => 'language.namespaces.basics.php', 1 => 'Fundamentos', ), 'next' => array ( 0 => 'language.namespaces.nsconstants.php', 1 => 'Palavra-chave namespace e __NAMESPACE__', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'language/namespaces.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
A implementação de namespaces do PHP é influenciada por sua natureza dinâmica como linguagem de programação. Assim, para converter código como o exemplo a seguir em código com namespace:
Exemplo #1 Acessando elementos dinamicamente
exemplo1.php:
<?php
class nomedaclasse
{
function __construct()
{
echo __METHOD__,"\n";
}
}
function nomedafuncao()
{
echo __FUNCTION__,"\n";
}
const nomedaconstante = "global";
$a = 'nomedaclasse';
$obj = new $a; // imprime nomedaclasse::__construct
$b = 'nomedafuncao';
$b(); // imprime nomedafuncao
echo constant('nomedaconstante'), "\n"; // imprime global
?>
Exemplo #2 Acessando dinamicamente elementos com namespace
<?php
namespace nomedonamespace;
class nomedaclasse
{
function __construct()
{
echo __METHOD__,"\n";
}
}
function nomedafuncao()
{
echo __FUNCTION__,"\n";
}
const nomedaconstante = "comnamespace";
/* note que, ao usar aspas duplas, "\\nomedonamespace\\nomedaclasse" deve ser usado */
$a = '\nomedonamespace\nomedaclasse';
$obj = new $a; // imprime nomedonamespace\nomedaclasse::__construct
$a = 'nomedonamespace\nomedaclasse';
$obj = new $a; // também imprime nomedonamespace\nomedaclasse::__construct
$b = 'nomedonamespace\nomedafuncao';
$b(); // imprime nomedonamespace\nomedafuncao
$b = '\nomedonamespace\nomedafuncao';
$b(); // também imprime nomedonamespace\nomedafuncao
echo constant('\nomedonamespace\nomedaconstante'), "\n"; // imprime comnamespace
echo constant('nomedonamespace\nomedaconstante'), "\n"; // também imprime comnamespace
?>
Certifique-se de ler a nota sobre escapamento de namespaces em strings.