先说结论: self 和 __CLASS__,都是对当前类的静态引用,取决于定义当前方法所在的类。也就是说,self 写在哪个类里面, 它引用的就是谁。$this 指向的是实际调用时的对象,也就是说,实际运行过程中,谁调用了类的属性或方法,$this 指向的就是哪个对象。但 $this 不能访问类的 ...
分类:
Web程序 时间:
2019-04-06 00:26:44
阅读次数:
164
自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类。 虽然也可以调用非静态方法,但是不会在运行时绑定。 static 不再只是简单的静态修饰关键字。而是还可以调用类的静态方法,非静态方法,为什么静态非静态要分开说呢,因为调用的效果是不一样的。 实例 ...
分类:
Web程序 时间:
2019-04-04 14:17:45
阅读次数:
174
php5.3版本新增的静态绑定的静态绑定语法,也成为PHP的后期静态绑定,如下 但是,既然B继承了A,并重写了A的func1,那么如果想让test中执行的是B中的func1要怎么做呢?于是,php5.3使用了预留的static关键字,将上述代码中的test函数改成这样: 也就是说:static::实 ...
分类:
Web程序 时间:
2018-08-22 22:52:34
阅读次数:
419
前言 首先,这个 符号跟 不是一个东西。这三个符号在PHP对象中共有两种用法: 1. 在类内部,可以使用 、 、 创建新对象 2. 可以使用 、`static:: parent::`调用静态变量和方法。 创建新对象 bar())。即明确地指定类名的静态调用和非静态调用。 3. 后期静态绑定(Late ...
分类:
Web程序 时间:
2018-08-07 21:24:42
阅读次数:
200
匿名函数 匿名函数也叫做闭包函数 即不指定名称的函数 常用作回调函数参数的值 匿名函数演示一 匿名函数演示二 匿名函数演示三 使用外部定义变量 后期静态绑定 在类的继承过程中 使用的类不再是当前类 而是调用的类 使用关键字 static来实现 "static::function()" 不再被解析为定 ...
分类:
Web程序 时间:
2018-01-27 19:03:40
阅读次数:
201
转发调用: 进行静态调用时前面有static修饰的 非转发调用: 直接通过类名,方法名调用的 后期静态绑定工作原理是存储了在上一个“非转发调用”(non-forwarding call)中的类名 意思是当我们调用一个转发调用的静态调用时,实际调用的类是上一个非转发调用的类。 分析一下上面的例子 Cl ...
分类:
Web程序 时间:
2017-12-25 23:25:03
阅读次数:
249
这里接着上一篇 php依赖注入,直接贴出完整代码如下: 再来一段简单的代码演示一下,容器代码来自simple di container,完整如下: 这段代码使用了后期静态绑定 依赖注入容器的高级功能 真实的dependency injection container会提供更多的特性,如 自动绑定(A ...
分类:
Web程序 时间:
2017-11-04 11:32:52
阅读次数:
247
本页说明了用 static 关键字来定义静态方法和属性。static 也可用于定义静态变量以及后期静态绑定。参见上述页面了解 static 在其中的用法。 本页说明了用 static 关键字来定义静态方法和属性。static 也可用于定义静态变量以及后期静态绑定。参见上述页面了解 static 在其 ...
分类:
其他好文 时间:
2017-07-23 21:14:06
阅读次数:
178
static 关键字来定义静态方法和属性。static 也可用于定义静态变量以及后期静态绑定。 静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。 静态属性不可以由对象通过 -> 操作符来访问。 用静态方式调用一个非静态方法会导致一个 E_STRICT 级别的错误。 在类中 ...
分类:
其他好文 时间:
2017-07-23 21:02:27
阅读次数:
159