PHP静态成员继承

PHP静态成员继承,php,oop,inheritance,static,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

use Parse\ParseObject;
use Parse\ParseQuery;

class BaseModel extends ParseObject
{

    public static $className = 'PlaceHolder';

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

}

查询功能在父类中定义,因此将使用该类的值。这是
self
关键字的限制。你会想调查一下,以避开这个问题

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

query
函数位于父类中,因此
self
始终是父类,在另一个类中重新定义变量并不重要。简单的解决方案是将类名作为参数传入。
public static function query() {
    return new ParseQuery(static::$className);
}