Home  >  Article  >  Backend Development  >  Declaration and use of namespaces in php

Declaration and use of namespaces in php

无忌哥哥
无忌哥哥Original
2018-06-28 15:52:391722browse

* Declaration and use of namespace

* 1. Use keywords: namespace

* 2.php5.3

* 3. There cannot be anything else except namespace before Any code other than declare and comments, including HTML, will not work

* 4. The namespace starts from the global position by default, and the global space is represented by \, similar to the root directory

* 5. If the current If the script declares a namespace, access to all members must use the namespace, including system functions

//1. Declare a namespace

namespace one;
class Demo{public $name='Peter Zhu';}
const SITE='PHP中文网';
function add($a,$b){return $a+$b;}


//If I want to declare a class with the same name, constants and functions can declare another namespace

//2. Multiple namespaces are allowed in a script

//Declaration of namespaces :two, use \tow\ for reference

namespace two;

//Now declare the class Demo, constant SITE, and function add, there will be no conflict

class Demo{public $name='朱老师';}
const  SITE = 'www.php.cn';
function add($a,$b){return $a+$b;}

//I believe you can see this, this is very For example, files with the same name are allowed to be created in different directories. The principle is the same.

echo (new Demo)->name, &#39;<br>&#39;; //默认输出的是当前空间的内容

//Check what the current namespace is? Use the system preset constant: __NAMESPACE__

echo &#39;当前命名空间是: &#39;,__NAMESPACE__,&#39;<br>&#39;;

/ /You can also bring the current namespace to access members in the current space

//Generate a class name with the current namespace

$className = __NAMESPACE__.&#39;\Demo&#39;;
echo (new $className)->name,&#39;<br>&#39;;

//You can bring the complete namespace name , starting from the global space\, which is equivalent to starting from the root directory

//Professional terminology: fully qualified name

echo (new \two\Demo)->name, &#39;<hr>&#39;;

//3. How to achieve cross-space access?

//If we want to access the attributes in the Demo class in space one, how do we do it?

//Cross-space access, like cross-directory access to files, must bring its complete space path

//For example, we want to access members of class Demo in one space

echo &#39;one空间的类成员:&#39;,(new \one\Demo)->name,&#39;<br>&#39;;

//4. In a script that declares a namespace, how to access system predefined methods?

//For example, a single-character array is declared

$welcome = &#39;php中文网欢迎您&#39;;
\print_r($welcome); echo &#39;<br>&#39;;
print($welcome); echo &#39;<hr>&#39;;

//We just said that to access global members in space, you must add \. Why is it okay if it is not added here?

// Because if the user does not add it, it will first search for the var_dump() function in this space.

//If it is not found, it will then search in the global space, so no error will be reported.

// But if we also create a var_dump() function in the current two space, only the user-defined var_dump() in the current space will be executed, and the system function with the same name will not be called

function print_r($arg)
{
    echo &#39;我是当前空间声明的函数调用:&#39;.$arg;
}
print_r($welcome); echo &#39;<br>&#39;;

//Equivalent calling syntax:

\two\print_r($welcome);

//Note: This print_r() has nothing to do with the system’s built-in print_r(), it just has the same name

// Just like, there is a Yangtze River Road in Shanghai, and there is a Yangtze River Road in Hefei. Apart from the same name, these two roads have no relationship whatsoever

// Yangtze River Road, Baoshan District, Shanghai

// Changjiang Road, Luyang District, Hefei City

// I believe no one will think that this is the same road?

//In fact, the complete calling statements of these two functions should be like this:

//1. Call the system:

\print_r($welcome);

//2. Call the current space:

\two\print_r($welcome);

//Although the subsequent names are the same, the ownership is different

The above is the detailed content of Declaration and use of namespaces in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn