• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php命名空间设计思想、用法与缺点分析
    POST TIME:2021-10-18 04:22

    本文实例讲述了php命名空间设计思想、用法与缺点。分享给大家供大家参考,具体如下:

    相比C#等语言,你可以在php函数里面随意定义变量并赋值,而不用担心覆盖了全局变量,或者类变量;你也可以随意的定义类变量,而不用担心会和函数名冲突,因为变量前面都有个$。

    php的命名空间和全局变量、局部变量的设计思想一样,都是为了尽可能的减少命名冲突。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的命名空间不跟随大流,有自己的一套独立的思想,对于先入为主的人来来说就显得怪异和令人迷惑。

    1. 命名空间中居然有反斜杠?

      点号(.)已经被用作字符串连接符了,又要区分绝对和相对命名空间,new .a.b.c()太不美观,所以选择反斜杠吧。

    2. 一旦使用了命名空间,使用全局类也要加上“\”或者use一下,累不累呀?

      没办法,为了严格类比文件系统的概念,也为了随便定义类名,而不用担心类名冲突。

    3. 既然是严格类比文件系统,为什么定义和导入命名空间的时候,前面不加\呢?

      只能说,php的设计者不是完美主义者。

    但php的命名空间确实缺乏逻辑完美性:

    使用建议

    理解了php命名空间的设计思想,并避免其设计不完美的地方,这样看来php的命名空间也是很容易接受的。

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • php的命名空间与自动加载实现方法
    • PHP命名空间定义与用法实例分析
    • PHP进阶学习之命名空间基本用法分析
    • PHP中命名空间的使用例子
    • 实例讲解PHP中使用命名空间
    • PHP命名空间简单用法示例
    • PHP命名空间与自动加载类详解
    • PHP命名空间namespace及use的简单用法分析
    • 如何理解PHP核心特性命名空间
    上一篇:php和C#的yield迭代器实现方法对比分析
    下一篇:php web环境和命令行环境下查找php.ini的位置
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信