In PHP, functions or classes with the same name are not allowed. In order to prevent repeated conflicts in class names or function names defined by programmers in the project, the concept of namespace was introduced in PHP5.3.
1. Namespace, that is, dividing the code into different spaces. The class names in different spaces are independent of each other and do not conflict with each other. Multiple namespaces can exist in a php file, and there cannot be any code before the first namespace. The code after the content space declaration belongs to this namespace, for example:
<?php echo 111; //由于namespace前有代码而报错 namespace Teacher; class Person{ function __construct(){ echo 'Please study!'; } }12345678
2. When calling classes or methods in different spaces, the namespace must be specified. For example:
<?php namespace Teacher; class Person{ function __construct(){ echo 'Please study!<br/>'; } } function Person(){ return 'You must stay here!'; }; namespace Student; class Person{ function __construct(){ echo 'I want to play!<br/>'; } } new Person(); //本空间(Student空间) new \Teacher\Person(); //Teacher空间 new \Student\Person(); //Student空间 echo \Teacher\Person(); //Teacher空间下Person函数 //输出: I want to play! Please study! I want to play! You must stay here!12345678910111213141516171819202122232425
3. Other files introduced into the namespace will not belong to this namespace, but to the public space or the namespace defined in the file itself. Example:
First define a 1.php and 2.php file:
<?php //1.phpclass Person{ function __construct(){ echo 'I am one!<br/>'; } }123456 <?phpnamespace Newer;require_once './1.php';new Person(); //报错,找不到Person;new \Person(); //输出 I am tow!;12345 <?php //2.phpnamespace Twoclass Person{ function __construct(){ echo 'I am tow!<br/>'; } }1234567
<?php namespace New;require_once './2.php';new Person(); //报错,(当前空间)找不到Person;new \Person(); //报错,(公共空间)找不到Person;new \Two\Person(); //输出 I am tow!;123456
4. Let’s look at how to use use: (use can be abbreviated for future references)
namespace School\Parents; class Man{ function __construct(){ echo 'Listen to teachers!<br/>'; } } namespace School\Teacher; class Person{ function __construct(){ echo 'Please study!<br/>'; } } namespace School\Student; class Person{ function __construct(){ echo 'I want to play!<br/>'; } } new Person(); //输出I want to play! new \School\Teacher\Person(); //输出Please study! new Teacher\Person(); //报错 ---------- use School\Teacher; new Teacher\Person(); //输出Please study! ---------- use School\Teacher as Tc; new Tc\Person(); //输出Please study! ---------- use \School\Teacher\Person; new Person(); //报错 ---------- use \School\Parent\Man; new Man(); //报错
The above is the PHP namespace namespace and import use usage that I compiled for everyone. I hope it will be helpful to everyone in the future.
Related articles:
Commonly used magic methods in PHP
## Design ideas and shortcomings of php namespace
The above is the detailed content of Detailed usage guide for PHP namespace namespace and import use. For more information, please follow other related articles on the PHP Chinese website!