Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从不带构造函数的子类分配类变量_Php_Late Static Binding - Fatal编程技术网

Php 从不带构造函数的子类分配类变量

Php 从不带构造函数的子类分配类变量,php,late-static-binding,Php,Late Static Binding,我正在为我的项目的数据库访问构建一个轻量级的模型层。 我希望它符合RubyonRails的精神。而不是实例化一个新模型 对象,我想使用单例方法。以下是我目前面临的问题: class BaseModel { public static $name; public static function get($id) { echo "SELECT * FROM ". self::$name ."s WHERE ". self::$name .' = '.$id;

我正在为我的项目的数据库访问构建一个轻量级的模型层。 我希望它符合RubyonRails的精神。而不是实例化一个新模型 对象,我想使用单例方法。以下是我目前面临的问题:

class BaseModel {
    public static $name;
    public static function get($id) {
        echo "SELECT * FROM ". self::$name ."s WHERE ". self::$name .' = '.$id;
    }
}

class Customer extends BaseModel {
    //parent::$name = 'customer'; => ERROR
}

$c = Customer::get(4);
是否有某种方法可以在类主体中指定父类的静态成员?我想要
尽可能避免创建实际的单例类。谢谢。

您正在寻找的功能称为后期静态绑定(LSB),谢天谢地,它已在5.3版中引入PHP。你可以在这里阅读:

这是使用LSB重写的代码

<?php

class BaseModel {
    public static $name;
    public static function get($id) {
        echo "SELECT * FROM ". static::$name ."s WHERE ". static::$name .' = '.$id;
    }
}

class Customer extends BaseModel {
    public static $name = 'customer';
}

$c = Customer::get(4);
?>

谢谢,这正是我想要的!