php限定符\导入类和命名空间导入类的区别

  1. use Exception;
    try{}catch(Exception $exception){}
  2. try{}catch(\Exception $exception){}
    有什么区别?哪种方式较好
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

看喜欢,\的方式更像全局的使用方式

2年前 评论
laravel_v (楼主) 2年前

再提一个,如果只是根命名空间的话,对于一些直接在加上 \ 会提升一丁点性能,对于内置函数更为更有效。

举个例子:php 中 内置函数是不能被覆盖的,你直接写的话,会报重复定义。

function array_rand($arr){
    var_dump($arr);
}

array_rand([2,1]);

但是,如果加上命名空间。

namespace My;

function array_rand($arr){
    var_dump($arr);
}

array_rand([2,1]);

就可以工作了,因为他会在当前命名空间下优先寻找,找不到再去根命名空间找。

但是如果在使用的时候,使用了完全限定命名空间 \array_rand([2, 1]) 这也的书写方式,那就表示直接从根命名空间找,就不会被替换(重写)了,所以在调用一些内置函数或者扩展提供的函数时,这样可以让其调用真正的函数,而不是被伪装的。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!