无限套娃,namesapce的命名之路【PHP教程】

!
也想出现在这里? 联系我们
信息

无限套娃,namesapce的命名之路,第1张

概述无限套娃,namesapce的命名之路 学完namespace,顺手来个命名空间的小总结。

1.命名空间的使用目的

PHP函数常量是不允许同名的。为了解决这三者的同名问题,所以出现了命名空间,故而命名空间只影响类、函数、常量(const)。

2.命名空间的使用格式

a.可以命名一个空间

 <?PHPnamespace space1;//namespace关键字+空间名 代码; ?>

b.也可以同时命名多个空间

<?PHPnamespace space1;//namespace关键字 +空间名 代码1;namespace space2;代码2;namespace space3;代码3;.......//代码1,代码2,代码3,可相同亦可不同....... ?>

注意事项:如果一个PHP文件中,第一个空间的定义义必须放在第1行。不过凡事都有例外,在声明命名空间之前还有唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。例如下面的代码会报错。

<HTML><?PHPnamespace space1;namespace space2;?></HTML>

3.命名空间的访问

命名空间的访问分为:非限定空间访问限定空间访问完全限定空间访问

a.非限定空间访问

<?PHPnamespace space3;   function f1(){   echo "space3";   }namespace space3\\space2;//其中"\\"代表space2是space3的子空间,同理space3是space2的父空间。   function f1(){     echo "space2";     }namespace space3\\space2\\space1;   function f1(){     echo "space1";     }   f1();//对上面空间成员进行访问,输出结果为:space1?>

b.限定空间访问

<?PHPnamespace space2\\space1;    function f1(){     echo "space1";      }namespace space2;function f1(){     echo "space2";      }   f1();//此时输出的是 space2   space1\\f1();//此时输出的是space1?>

c.完全限定空间访问

<?PHPnamespace space3;   function f1(){   echo "space3";   }namespace space2;      function f1(){     echo "space2";     }namespace space1;     function f1(){     echo "space1";     }   f1();//对上面空间成员进行访问,输出结果为:space1   \\space3\\f1();//对space3进行访问,输出结果为:space3   \\space2\\f1();//对space2进行访问,输出结果为:space2?>

4.引入空间成员

a.use 空间名\\空间名 【as 别名】:将指定空间引入到当前空间。同可以使用as关键字为被引入的空间起个别名

b.use 空间名\\空间名\\成员类 【as 别名】:将指定的空间中的成员引入到当前空间,引入空间成员只能引入类

5.一些小情况

一旦命名空间出现,那么空间元素(类、常量、函数)的访问就被限定在空间内,如果使用非限定空间访问,系统会出现以下解析逻辑(限定名称或完全限定名称是直接按照路径准确查找)

首先在自己空间内查找

其次在如果找不到元素,不同空间元素的处理方式不同

系统常量,系统函数如果找不到,会全局空间去找

系统类是不会自动去全局空间去找的(报错,提示空间找不到)

<?PHPnamespace space3;   function f1(){   echo "space3";   }//当前所有访问如果使用非限定名称都代表访问当前空间内的元素f1();//访问space3下f1()函数//想要访问函数define('PI',3.14);//space3下没有define()函数,全局函数有//想要访问系统常量echo PHP_VERSION; //space3下没有define()函数,全局函数有//想要访问类//错误方案//$m=new MysqLi('localhost','root','root');//系统会提示类不存在//正确方案$m= new \\MysqLi('localhost','root','root');?>

推荐 :php教程 总结

以上是内存溢出为你收集整理的无限套娃,namesapce的命名之路全部内容,希望文章能够帮你解决无限套娃,namesapce的命名之路所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞131 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容