PHP | Namespace
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 namespace MyNamspaceName { // Regular PHP code function hello() { echo 'Hello I am Running from a namespace!'; } } ?> |
If namespace is declared globally, then declare it without any name.
<?php namespace { // Global space! } ?> |
Multiple namespaces can be declared within a single PHP code.
<?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 namespace MyNamespaceName; function hello() { echo 'Hello I am Running from a namespace!'; } // Resolves to MyNamespaceName\hello hello(); // Explicitly resolves to MyNamespaceName\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 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 namespace OtherProject; $title = 'geeks'; // This is valid PHP require 'project/blog/title/' . $title . '.php'; // This is not use Project\Blog\title\$title; ?> |
Reference : http://php.net/manual/en/language.namespaces.php
Recommended Posts:
- jQuery | event.namespace Property
- JavaScript | Check if a string is a valid hex color representation
- How to describe “object” arguments in jsdoc?
- Detect the Operating System of User using JavaScript
- PHPUnit | assertStringNotContainsString() Function
- HTML | <legend> align Attribute
- HTML | canvas beginPath() Method
- HTML | <ul> Tag
- PHPUnit | assertStringNotContainsStringIgnoringCase() Function
- Web Audio API | AudioContext outputLatency property
- Web Audio API | AudioNode numberOfInputs Property
- Web Audio API | AudioNode numberOfOutputs property
- PHP | Imagick exportImagePixels() Function
- PHPUnit | assertContainsOnly() Function
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



