设为首页 收藏本站
查看: 761|回复: 0

[经验分享] php 之命名空间

[复制链接]

尚未签到

发表于 2018-12-13 08:07:54 | 显示全部楼层 |阅读模式
  定义: 命名空间是一种封装事物的方法。
  作用:一般用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:
            (1)  用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
            (2)为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名                         称,提 高源代码的可读性。
       命名空间里可以出现类,函数,常量 ,但是常量必须由conts定义的常量命名空间才有效,其命名规
       则要符合php命名规则。
        声明:
    namespace China; //必须放在最顶端
    const nation='中国'//常量命名空间;
    function getInfo()
    {
echo "我是中国人";
     }   
    namespace USA;
    const nation='USA';
    function getInfo()
    {
echo 'IAM A A';
     }
     getInfo();//非限定名称访问//I AM AA   (调用namespace USA的函数)
     \China\getInfo(); //完全限定访问//我是中国人  (调用namespace China)
     echo nation; // 输出USA                        
     echo \China\nation;//输出中国         定义多个命名空间,使用大括号扩起来如下例:
       命名空间的多级访问:
   namespace  China\beijing\haidian;
   class Person
   {
static $name ="李白";
    }
   namespace USA\abc;
   class Person
   {
static $name= "bbb";
    }
   echo \China\beijing\haidian\Person::$name; //输出李白  属于多级访问        访问命名空间自动寻址
     namespace China\beijing\haidian;
     function getInfo()
     {
echo "zheshi china";
     }
     namespace China\beijing;
     function getInfo()
    {
echo "cccc";
    }
    getInfo();//usa  命名空间在China\beijing
    haidian\getInfo();// zheshi china
   相当与命名空间/China\beijing\haidian\getInfo(),使用相对地址去理解
   beijing\haidian\getInfo();// 报错,
   命名空间相当与China\beijing\beijing\haidian\getInfo() 相对地址去理解
   \China\beijing\haidian\getInfo();// zheshi china  
   在最前面加\ 属于最顶层的空间,从第一个namespace 开始。相当于是一个绝对路径       空间访问形式 :
  非限定访问:          echo getInfo();  类似与;require('getInfo.php')
  限定名称访问:      China\getInfo();      类似于require('China/getInfo.php) 系统自动寻址
  完全限定访问:      \China\getInfo();    类似于 requre('c:\china\getinfo.php);
  引用命名空间: 使用use  来引用命名空间, 如下例:
    namespace China\beijing\haidian;
    function Info()
    {
echo "libai";
    }
    namespace USA\WASH;
    function Info()
   {
  echo "abc";
    }
   use China\beijing\haidian;
   haidian();  // 输出abc
   haidian\Info();//输出libai; 如果不use China\beijing\haidian   此处报错,会直接寻址到
                    USA\WASH\haidian\Info();
   使用引用命名空间后 引用空间的最后一个地址,与访问的第一个地址对上即可访问。
   上例子  haidian\Info(),与use China\beijing\haidian; 上的haidian匹配,因此可以访问
           如果是beijing\haidian\Info() 与 use China\beijing\haidian 匹配相当与
            \China\beijing\haidian\beijing\haidian\Info()  ,因此会报错。  
  命名空间的注意事项:
  namespace 必须在程序最上面,即使上面head
  命名空间的地址不是真实存在的目录,是虚拟的空间,但thinkphp 命名空间是真实路径




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-650707-1-1.html 上篇帖子: zabbix密钥监控 下篇帖子: php对象转数组的黑技术
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表