Like C++, PHP Namespaces are the way of encapsulating items so that same names can be reused without name conflicts.
- It can be seen as an abstract concept in many places. It allows redeclaring the same functions/classes/interfaces/constant functions in the separate namespace without getting the fatal error.
- A namespace is a hierarchically labeled code block holding a regular PHP code.
- A namespace can contain valid PHP code.
- Namespace affects following types of code: classes (including abstracts and traits), interfaces, functions, and constants.
- Namespaces are declared using the namespace keyword.
A namespace must be declared the namespace at the top of the file before any other code – with one exception: the declare keyword.
php
<?php
namespace
MyNamespaceName {
function
hello()
{
echo
'Hello I am Running from a namespace!'
;
}
}
?>
If namespace is declared globally, then declare it without any name.
php
<?php
namespace
{
}
?>
Multiple namespaces can be declared within a single PHP code.
php
<?php
namespace
MyNamespace1 {
}
namespace
MyNamespace2 {
}
namespace
{
}
?>
A namespace is used to avoid conflicting definitions and introduce more flexibility and organization in the code base. Just like directories, namespace can contain a hierarchy know as subnamespaces. PHP uses the backslash as its namespace separator.
Example:
php
<?php
namespace
MyNamespaceName;
function
hello()
{
echo
'Hello I am Running from a namespace!'
;
}
hello();
namespace
\hello();
?>
Aliasing in Namespaces
Importing is achieved by using the ‘use’ keyword. Optionally, It can specify a custom alias with the ‘as’ keyword.
Example:
php
<?php
namespace
MyNamespaceName;
require
'project/database/connection.php'
;
use
Project\Database\Connection
as
Connection;
$connection
=
new
Connection();
use
Project\Database
as
Database;
$connection
=
new
Database\Connection();
?>
It is possible to dynamically call namespaced code, dynamic importing is not supported.
php
<?php
namespace
OtherProject;
$title
=
'geeks'
;
require
'project/blog/title/'
.
$title
.
'.php'
;
use
Project\Blog\title\
$title
;
?>
Reference : http://php.net/manual/en/language.namespaces.php
My Personal Notes
arrow_drop_up