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

  1. use Exception;
    try{}catch(Exception $exception){}
  2. try{}catch(\Exception $exception){}
    有什么区别?哪种方式较好
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 5

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

1周前 评论
CanyingV (楼主) 1周前

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

举个例子: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]) 这也的书写方式,那就表示直接从根命名空间找,就不会被替换(重写)了,所以在调用一些内置函数或者扩展提供的函数时,这样可以让其调用真正的函数,而不是被伪装的。

1周前 评论

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