PHP | Namespace – GeeksforGeeks

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

Rate this post

Viết một bình luận