PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Espaço global> <Definição de Namespace
Last updated: Fri, 22 Aug 2008

view this page in

Usando namespaces

Cada classe e função em um namespace pode ser referenciado pelo nome completo - e.g. MyProject::DB::Connection ou MyProject::DB::connect - em algum momento.

Exemplo #1 Usando o nome com namespace

<?php
    
require 'MyProject/Db/Connection.php';
    
$x = new MyProject::DB::Connection;
    
MyProject::DB::connect();
?>

Namespaces podem ser importados para o contexto atual (global ou namespace) usando o operador use. A sintaxe para o operador é:

<?php
/* ... */
use Some::Name as Othername;

// The simplified form of use:
use Foo::Bar;
// which is the same as :
use Foo::Bar as Bar;
?>
O nome importado funciona da seguinte forma: cada vez que o compilador encontra um nome local Othername (o nome sozinho ou com prefixo para nome grande separado por ::) o nome importado Some::Name o substitue.

use pode ser usado somente no escopo global, não dentro de função ou classe. Nomes importados tem efeito a partir do ponto do import até o final do arquivo atual. Ele é recomendado colocá-lo no início do arquivo para evitar confusão.

Exemplo #2 Importando e acessando namespace

<?php
    
require 'MyProject/Db/Connection.php';
    use 
MyProject::DB;
    use 
MyProject::DB::Connection as DbConnection;
    
    
$x = new MyProject::DB::Connection();
    
$y = new DB::connection();
    
$z = new DbConnection();
    
DB::connect();
?>

Nota: A operação import é apenas em tempo de compilação, todos nomes locais são convertidos para seus equivalentes nomes completos pelo compilador. Note que não é traduzido nomes em strings, então callbacks não respeitará regras do import.



add a note add a note User Contributed Notes
Usando namespaces
richard at richard-sumilang dot com
27-Mar-2008 10:36
Syntax for extending classes in namespaces is still the same.

Lets call this Object.php:

<?php

namespace com
::rsumilang::common;

class
Object{
  
// ... code ...
}

?>

And now lets create a class called String that extends object in String.php:

<?php

class String extends com::rsumilang::common::Object{
  
// ... code ...
}

?>

Now if you class String was defined in the same namespace as Object then you don't have to specify a full namespace path:

<?php

namespace com
::rsumilang::common;

class
String extends Object
{
  
// ... code ...
}

?>

Lastly, you can also alias a namespace name to use a shorter name for the class you are extending incase your class is in seperate namespace:

<?php

namespace com
::rsumilang::util;
use
com::rsumlang::common as Common;

class
String extends Common::Object
{
  
// ... code ...
}

?>

- Richard Sumilang

Espaço global> <Definição de Namespace
Last updated: Fri, 22 Aug 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites