A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

使用use的目的:
在命名空间字符串过长时,使用use可以相应的缩短命名空间。

use的使用方法:
1.new类时,最前面无需用反斜杠。此外,use后没有as时,缩短的命名空间默认为最后一个反斜杠后的内容。

//name.phpnamespace animal\dog;class Life{    function __construct(){            echo 'dog life!';        }}namespace animal\cat;class Life{    function __construct(){            echo 'cat life!';        }}new Life();  //按照代码执行顺序,这里默认animal\cat这个命名空间new \animal\dog\Life();  //Ause animal\dog;  //anew dog\Life();  //Buse animal\dog as d;  //bnew d\Life();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

通过A、B行代码比较,需要注意:

使用use后,new类时,最前面没有反斜杠。

没使用use时,命名空间最前面有反斜杠

通过a、b行代码比较,可以理解:

use后没有as时,缩短的命名空间默认为最后一个反斜杠后的内容。如上的:

use animal\dog;
相当于

use animal\dog as dog;

2.namespace后面不建议加类名,但use后可以。

//name.phpnamespace animal\dog;class Life{    function __construct(){            echo 'dog life!';        }}namespace animal\cat;class Life{    function __construct(){            echo 'cat life!';        }}use animal\dog\Life as dog;  new dog();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

如上所示,use后加上类名后,就相当于把类改了个名称:由Life改为dog了。

上面不用as dog就会报错:

Fatal error: Cannot use animal\dog\Life as Life because the name is already in use
因为cat下也有个一样名称的Life类。

可以理解为,使用use后,这个昵称对应的类只能归当前命名空间占有,其它命名空间下不允许存在该类。

//name.phpnamespace animal\dog;class Life{    function __construct(){            echo 'dog life!';        }}class Dog{    function __construct(){            echo 'dog in dog!';        }}namespace animal\cat;// class Dog{//     function __construct(){//             echo 'dog in cat!';//         }// }class Life{    function __construct(){            echo 'cat life!';        }}use animal\dog;  new dog\Dog();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

如上,使用了

use animal\dog;
  • 1
  • 2

通过上面代码,我想使用use的目的效果(缩短命名空间名称)就很明显了。

简单总结一下:

namespace就是划分领域的作用,代表这些东西是属于某个命名空间下的。

use就是起小名的作用,不论写起来还是说起来都可以省不少事儿。


1 个回复

倒序浏览
奈斯,加油加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马