PHP静态成员继承

时间:2015-04-06 11:37:14

标签: php oop inheritance static

我有这个基类:

<?php

use Parse\ParseObject;
use Parse\ParseQuery;

class BaseModel extends ParseObject
{

    public static $className = 'PlaceHolder';

    public static function query() {
        return new ParseQuery(self::$className);
    }

}

这个儿童班

<?php

class Post extends BaseModel
{

    public static $className = 'Post';

}

当我拨打Post :: $ className时,我会发布&#39;发布&#39;但是当我使用Post :: query()时,它使用父类值&#39; PlaceHolder&#39;。

为什么继承的静态函数使用父类的值?

1 个答案:

答案 0 :(得分:3)

query函数在父类中定义,因此将使用该类的值。这是self关键字的限制。您需要查看Late Static Binding以解决此问题。

public static function query() {
    return new ParseQuery(static::$className);
}