在本教程中,我们将学习PHP后期静态绑定(PHP Late Static Binding),这是在PHP 5.3中添加的一个有趣的功能。
让我们从一个简单的例子开始。
</td>
<?php
class
Model {
protected
static
$tableName
=
'Model'
;
public
function
getTableName() {
return
self::
}
User
extends
'User'
echo
User::getTableName();
// Model, 而不是 User
首先,我们创建了一个模型类Model,它有:一个值为Model的静态属性$tableName和一个返回$tableName值的getTableName()静态方法。注意,我们使用self和操作符::来访问模型类Model中的静态属性。
getTableName()
::
其次,我们创建了另一个名为User的类,它扩展了模型类Model。User类也有一个$tableName静态属性。
最后,我们调用User类的getTableName()方法。但是,它返回的是Model而不是User。
Model
原因是self总是解析为方法所属的类。这意味着,如果您在父类中定义了一个方法并从子类中调用它,self就不会像我们期望的那样引用子类。
为了解决这个问题,从5.3版本开始,PHP引入了一个称为PHP后期静态绑定的新特性。基本上,不使用self,而是使用static关键字来引用在运行时调用的类。
PHP后期静态绑定
让我们修改一下上面的例子:
Model{
getTableName(){
// User
现在我们就得到了想要的结果。
请注意,static::只能引用静态属性和静态方法。
static::
原文链接:https://codingdict.com/