PHP命名空间入门教程
PHP5.3当中就引入了“命名空间”的概念,一直都没怎么关注和使用,其实学习它也挺简单的,看官方的教程就行了:
注意:PHP 命名空间目前仅支持 类名称 和 命名空间 的导入,暂不支持导入函数或常量!
FAQ: things you need to know about namespaces
学习、实践笔记:
1、定义命名空间时,命名空间开头不能有反转义符“\”,即 namespace \A\B\C; 是错误的,此命名空间将不起作用!namespace A\B\C; 才是对的。
2、导入命名空间时,如果命名空间是一级的,则开头一定要加反转义符“\”,即 use A; 是错误的,use \A; 才是对的。
3、导入命名空间时,如果命名空间是二级或更多级的,则开头有没有加反转义符“\”效果都是一样,即都表示 完全限定名称,如 use A\B\C; 跟 use \A\B\C; 是等效的。(如果是多级的,建议开头不加“\”)
4、对于“非限定名称函数/常量”,如果 当前命名空间 有,则调用当前命名空间下的该 函数/常量,否则,继续到 全局命名空间 下去找,有,则调用,没有,则报错!
5、对于“非限定名称类”,如果 当前命名看空间 有,则调用当前命名空间下的该 类,没有,则调用__autoload函数,还没有的话,就直接报错!即不会继续到 全局命名空间 下去找了!
6、对于“限定名称函数/常量”,如果 当前命名看空间 有,则调用当前命名空间下的该 限定名称函数/常量,没有,则直接报错!即不会继续到 全局命名空间 下去找了!
7、对于“限定名称类”,如果 当前命名看空间 有,则调用当前命名空间下的该 限定名称类,没有,则调用__autoload函数,还没有的话,就直接报错!即不会继续到 全局命名空间 下去找了!
8、上面说的常量指的是通过关键字const定义的常量,而函数define()定义的常量是不受命名空间影响的,即在任何地方都可用,具有全局性!另外 global 变量也不受命名空间影响!
额,补充一点,还有可能到 导入的命名空间 下去找!
使用建议:
1、强烈推荐使用“命名空间”的功能;
2、只把“类”命令空间化,其他的(如函数、常量)最好还是设计为全局性,即放在全局命名空间中,方便调用;
3、命名空间 + autoload机制,实现“类文件”自动加载;
相关文章
- php之内存管理基础
- 【PHP面向对象(OOP)编程入门教程】9.封装性(var与public,protected,private的关系)
- PHP如何自动识别第三方Restful API的内容,自动渲染成 json、xml、html、serialize、csv、php等数据
- 配置php.ini实现PHP文件上传功能
- 【PHP面向对象(OOP)编程入门教程】18.__call()处理调用错误
- 【PHP面向对象(OOP)编程入门教程】11.类的继承
- 【PHP面向对象(OOP)编程入门教程】1.什么是面向对象?
- PHP Socket编程 之 深入解析fsockopen与pfsockopen的区别
- PHP 函数库精讲之类与对象
- PHP 语法字符串函数 strcmp、strlen 使用及实现
- PHP实现微信扫码自动登陆与注册,参考实例
- PHP Swoole与TCP三次握手
- php:跨域
- 以源码编译的方式安装PHP与php-fpm
- php调试函数
- [获取行数]php读取大文件提供性能的方法,PHP的stream_get_line函数读取大文件获取文件的行数的方...
- PHP中获取当前页面的完整URL & php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别
- PHP实现简易的模板引擎
- Relearning PHP (2) – php 的浮点数float
- PHP读取配置文件类(php,ini,yaml,xml)
- Relearning PHP (2) – php 的浮点数float
- PHP图片识别成文字
- [php-src] 理解Php内核中的函数与INI
- atitit.Atitit.检测文本文件的编码 java 与php版 。Net
- atitit.窗体静听esc退出本窗体java swing c# .net php
- PHP面试题:写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数(array_multisort())
- linux中给PHP安装mongodb的扩展