您好,登录后才能下订单哦!
php命名空间的缺点有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
定义命名空间
必须是第一个语句,前面不能有任何语句,注释可以。
必须是绝对命名空间。
namespace bookrpg\config; //或者 namespace bookrpg\config { } namespace \bookrpg\config; //错误,不能有前导\
导入命名空间
必须是绝对命名空间。
use bookrpg\config\ClassName; use \bookrpg\config\ClassName; //可以有前导\,但不建议加 use bookrpg\config\ClassName as NewClassName; use Exception; use \Exception; //可以有前导\,但不建议加
使用命名空间
使用绝对命名空间
$cls = new \bookrpg\config\ClassName(); class MyException extends \Exception { }
使用相对命名空间
namespace bookrpg { //等同于new \bookrpg\config\ClassName(); $cls = new config\ClassName(); //错误,php会认为是\bookrpg\Exception,而不是全局类Exception $ex = new Exception(); }
怪异的地方
C++、Java、C#都有相似的命名空间概念,而php的命名空间不跟随大流,有自己的一套独立的思想,对于先入为主的人来来说就显得怪异和令人迷惑。
命名空间中居然有反斜杠?
点号(.)已经被用作字符串连接符了,又要区分绝对和相对命名空间,new .a.b.c()太不美观,所以选择反斜杠吧。
一旦使用了命名空间,使用全局类也要加上“\”或者use一下,累不累呀?
没办法,为了严格类比文件系统的概念,也为了随便定义类名,而不用担心类名冲突。
既然是严格类比文件系统,为什么定义和导入命名空间的时候,前面不加\呢?
只能说,php的设计者不是完美主义者。
但php的命名空间确实缺乏逻辑完美性:
前导\的使用不统一,同样是绝对命名空间,定义的时候不允许用,导入的时候却允许用。
即使是全局类,在非全局命名空间下,也必须使用前导\,而全局函数和变量又不受此限制。
使用建议
定义和导入命名空间的时候,统一不加前导\
所有的类都使用use导入,包括全局类,只命名空间类,有冲突的就as一下
禁止直接使用相对命名空间
一、phpStudy,是一个新手入门最常用的开发环境。二、WampServer,WampServer也同样的也是和phpStudy一样操作简单对小白比较友好。三、XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包;四、MAMP,MAMP分为两种MAMP和MAMP Pro for Mac。五、宝塔面板,宝塔面板是一款服务器管理软件,支持windows和linux系统。六、UPUPW,UPUPW是目前Windows平台下最具特色的Web服务器PHP套件。
关于php命名空间的缺点有哪些问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。