目录
主要内容:
静态延时绑定
1、什么是静态延时绑定
- 自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类。
- "后期绑定"的意思是说,static::不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为"静态绑定",因为它可以用于(但不限于)静态方法的调用。
- 我们需要一个在调用执行时才确定当前类的一个特征,就是说将static关键字对某个类的绑定推迟到调用执行时,就叫静态延迟绑定!
- 语法:static::静态属性,静态方法,成员方法,类常量
2、实例:静态延时绑定演示
如果只有一个类,self和static都代表当前类
如果在继承范围,self永远代码当前类,static代表最终执行的类
命名空间概述
1、什么是命名空间
- 从广义上来说,命名空间是一种封装事物的方法。
- 在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。
- 在PHP中,命名空间用来解决在编写类库或应用程序时名称冲突的问题。
- PHP 命名空间提供了一种将相关的类、函数和常量组合到一起的途径。
2、定义命名空间的要求
- PHP 在 5.3.0 以后的版本开始支持命名空间。
- 空间中可以包含任意合法的PHP代码,但只有三种代码受命名空间的影响,它们是:类,函数和常量。
- 命名空间通过关键字namespace来声明。
- 命名空间必须是程序脚本的第一条语句。
3、实例:定义单个命名空间
4、实例:定义子命名空间
- 使用“\”斜线来分割子文件夹。例如:home\controller\a.txt
- 使用“\”斜线来分割子命名空间。例如:$obj = new Home\Controller\Student()
使用命名空间
1、文件系统中访问文件的方式
- 相对文件名形式,如foo.txt。它会被解析为 curdir/foo.txt。 当前文件夹
- 相对路径名形式,如subdir/foo.txt。它会被解析为 curdir/subdir/foo.txt。 当前文件夹
/子文件夹
- 绝对路径名形式,如/main/foo.txt。它会被解析为/main/foo.txt。 (从根目录找)
2、访问命名空间中元素的方式
- 非限定名称(不带任何前缀)。$obj = new User(),解析为$obj = new current\User()
- 限定名称(带相对空间前缀)。$obj = new Home\User(),解析为$obj = new current\Home\User()
- 完全限定名称(从根空间开始)。$obj = new \Home\User(),解析为$obj = new \Home\User()
namespace关键字
关键字 namespace 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符。
命名空间元素的导入和别名
1、描述
- 允许通过别名引用或导入外部的完全限定名称,是命名空间的一个重要特征。
- PHP 命名空间支持两种使用别名或导入方式:为类名称使用别名,或为命名空间名称使用别名
- 在PHP中,导入是通过操作符 use 来实现的,别名是通过操作符as来实现的。
2、实例:导入命名空间中的类并起别名