(PHP 5 >= 5.3.0, PHP 7)
What are namespaces? In the broadest definition namespaces are a way of encapsulating
items. This can be seen as an abstract concept in many places. For example, in any
operating system directories serve to group related files, and act as a namespace for
the files within them. As a concrete example, the file foo.txt
can
exist in both directory /home/greg
and in /home/other
,
but two copies of foo.txt
cannot co-exist in the same directory. In
addition, to access the foo.txt
file outside of the
/home/greg
directory, we must prepend the directory name to the file
name using the directory separator to get /home/greg/foo.txt
. This
same principle extends to namespaces in the programming world.
Version | Description |
---|---|
7.0.0 | Added Group use Declarations. |
In the PHP world, namespaces are designed to solve two problems that authors of libraries and applications encounter when creating re-usable code elements such as classes or functions:
PHP Namespaces provide a way in which to group related classes, interfaces, functions and constants. Here is an example of namespace syntax in PHP:
Example #1 Namespace syntax example
<?php
namespace my\name; // see "Defining Namespaces" section
class MyClass {}
function myfunction() {}
const MYCONST = 1;
$a = new MyClass;
$c = new \my\name\MyClass; // see "Global Space" section
$a = strlen('hi'); // see "Using namespaces: fallback to global
// function/constant" section
$d = namespace\MYCONST; // see "namespace operator and __NAMESPACE__
// constant" section
$d = __NAMESPACE__ . '\MYCONST';
echo constant($d); // see "Namespaces and dynamic language features" section
?>
Note: Namespace names are case-insensitive.
Note:
The Namespace name
PHP
, and compound names starting with this name (likePHP\Classes
) are reserved for internal language use and should not be used in the userspace code.