本篇文章给大家介绍一下php如何声明命名空间、访问空间元素的三种方式,引入命名空间的方法。
一、命名空间
1.1 介绍
在一个大的项目中,可能会遇到同名的类、函数、常量,为了区分这些元素,我们可以将这些元素分别存放到不同的命名空间中。
1、命名空间就是包,用来存放项目中的类、函数、常量
2、通过namespace关键字来声明命名空间
1.2 声明命名空间
例:
<?php namespace China; // 定义命名空间 function getInfo () { echo '我是中国人'; } getInfo(); namespace USA; // 定义命名空间 function getInfo () { echo '我是美国人'; } getInfo(); ?>
效果:
利用/命名空间/
可进入某个命名空间中调用方法。
例:
<?php namespace China; // 定义命名空间 function getInfo () { echo '我是中国人'; } getInfo(); namespace USA; // 定义命名空间 function getInfo () { echo '我是美国人'; } getInfo(); /China/ getInfo(); ?>
效果:
1.3 多级命名空间
命名空间的名字可以是多级的(子级命名空间)
例如:
<?php namespace China/Beijing/Shunyi; // 定义命名空间 function getInfo () { echo 'China/Beijing/Shunyi'; } getInfo(); // 非限定名称访问 namespace USA/Washington; // 定义命名空间 function getInfo () { echo 'USA/Washington'; } /USA/Washington/ getInfo(); // 完全限定名称访问 ?>
效果:
1.4 访问空间元素的三种方式
1、非限定名称访问
2、完全限定名称访问
3、限定名称访问
例:
<?php namespace China/Beijing/Shunyi; // 定义命名空间 function getInfo () { echo 'China/Beijing/Shunyi'; } namespace China/Beijing; // 定义命名空间 function getInfo () { echo 'China/Beijing'; } getInfo(); // 非限定名称访问 /China/Beijing/getInfo(); // 完全限定名称访问 Shunyi/getInfo(); // 限定名称访问 ?>
效果:
二、引入命名空间
通过use
引入命名空间
完全限定名称访问元素
引入命名空间的拼接规则
公共空间+引入空间+(去除公共部分,公共部分只能留一级)空间元素
例:
<?php namespace China/Beijing/Shunyi; // 定义命名空间 function getInfo () { echo 'China/Beijing/Shunyi<br>'; } namespace China/Beijing; // 定义命名空间 function getInfo () { echo 'China/Beijing<br>'; } use China/Beijing/Shunyi; getInfo(); Shunyi/getInfo(); ?>
效果:
2.1 引入空间元素
引入类: use
引入函数:use function
引入常量: use const
例:
<?php namespace China/Beijing/Shunyi; // 定义命名空间 class Student { } function getInfo() { echo 'jdk'; } const TYPE = 'CONST'; namespace USA; // 定义命名空间 // 引入类 use China/Beijing/Shunyi/Student; $stu = new Student(); var_dump($stu); echo '<br>'; // 引入函数 use function China/Beijing/Shunyi/getInfo; getInfo(); echo '<br>'; // 引入常量 use const China/Beijing/Shunyi/TYPE; echo TYPE; ?>
效果:
2.2 给类、函数取别名
如果引入的类和函数与当前空间的类和函数名称相同,需要给引入的类和函数取别名。
通过as取别名
例:
<?php namespace China/Beijing/Shunyi; // 定义命名空间 class Student { } namespace USA; // 定义命名空间 class Student { } use China/Beijing/Shunyi/Student as ChinaStudent; $stu=new Student; var_dump($stu); echo '<br>'; $stu1=new ChinaStudent; var_dump($stu1); ?>
效果:
2.3 公共空间
如果一个页面没有namespace声明空间这个页面的元素在公共空间下
公共空间用/
表示
例:
<?php function getInfo() { echo '李白<br>'; } /getInfo(); ?>
效果:
2.4 命名空间注意事项
1、命名空间只能存放类、函数、const常量。
2、第一个namespace前面不能有任何的代码,空白字符,header()也不行。
3、包含文件不影响当前的命名空间。
推荐学习:《PHP视频教程》
以上就是深入浅析php中如何声明和引入命名空间的详细内容,更多请关注php中文网其它相关文章!
声明:本文转载于:掘金社区,如有侵犯,请联系admin@php.cn删除
- 上一篇:PHP中什么是状态模式?通过实例来了解它
- 下一篇:没有了