* 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, '<br>'; //默认输出的是当前空间的内容
//Check what the current namespace is? Use the system preset constant: __NAMESPACE__
echo '当前命名空间是: ',__NAMESPACE__,'<br>';
/ /You can also bring the current namespace to access members in the current space
//Generate a class name with the current namespace
$className = __NAMESPACE__.'\Demo'; echo (new $className)->name,'<br>';
//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, '<hr>';
//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 'one空间的类成员:',(new \one\Demo)->name,'<br>';
//4. In a script that declares a namespace, how to access system predefined methods?
//For example, a single-character array is declared
$welcome = 'php中文网欢迎您'; \print_r($welcome); echo '<br>'; print($welcome); echo '<hr>';
//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 '我是当前空间声明的函数调用:'.$arg; } print_r($welcome); echo '<br>';
//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!