php的命名空间

来源:互联网 发布:raphael.js 类似工具 编辑:程序博客网 时间:2024/05/18 00:07

            背景:

                 如果在平时中我们去require一个一个的php文件,不会存在多大的问题。

                但是设想这样一个场景:如果有两个php文件中存在一样的class名字,那么同时调用的时候,就会出现报错信息.因为根本不知道你调用的是哪一个具体的class名字.

               下面有具体的demo.

                这个时候引入新的一个概念:命名空间namespace.

                

               新建一个a.php  b.php  c.php

              

               a.php   

class Hello{    public static function show()    {        echo "this is a show";    }}

             

             b.php

class Hello{    public static function show()    {        echo "this is b show";    }}


        c.php

require_once("a.php");require_once("b.php");$hello=new Hello();

当执行的时候会报错



为了解决这个引入名字相同类和方法,我们引入一个命名空间

先上代码后面再放结论

a.php

<?phpnamespace name\a;class Hello{    public static function show()    {        echo "this is a show";    }}
b.php

<?phpnamespace name\b;class Hello{    public static function show()    {        echo "this is b show";    }}
c.php

<?phprequire_once("a.php");require_once("b.php");use name\b;use name\a;$hello1=new a\Hello();$hello2=new b\Hello();$hello1::show();echo "<br/>";$hello2::show();
结果



结论

1.命名空间必须在第一行。

2.命名空间必须有层级,至少为2层。

3.当引入命名空间后,可以解决因为相同名字的类或方法报错的问题。





原创粉丝点击