Sintaxe de namespaces na POO em PHP
Para definir um namespace para uma classe, é necessário
escrever, na primeira linha do arquivo onde essa classe
está armazenada, o comando namespace,
e após ele, separado por um espaço, o nome desse
namespace.
Se uma classe pertence a um namespace, para criar um objeto da classe será necessário especificar não apenas o nome da classe, mas também seu namespace, separados por uma barra invertida. Vamos ver um exemplo.
Suponha que temos uma classe Page, que não pertence
a nenhum namespace. Nesse caso, criamos um objeto
dessa classe da seguinte forma:
<?php
$page = new Page;
?>
Agora, suponha que esta classe pertença ao namespace
Admin. Neste caso, criamos um objeto desta
classe da seguinte forma:
<?php
$page = new \Admin\Page;
?>
Vamos separar as classes para usuários e classes para administradores em namespaces diferentes, para evitar os conflitos de classes descritos anteriormente.
Para a classe Page do arquivo /admin/page.php,
especificamos o namespace Admin:
<?php
namespace Admin;
class Page
{
}
?>
E para a classe Page do arquivo /users/page.php,
especificamos o namespace Users:
<?php
namespace Users;
class Page
{
}
?>
Agora, vamos no arquivo /index.php
criar um objeto de cada uma das
classes Page:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
Suponha que você tenha uma pasta core e uma pasta
project. Em cada uma das pastas existe sua própria
classe Controller. Faça com que
essas classes pertençam a namespaces diferentes.
No arquivo index.php crie objetos
de cada uma das classes.