Php 从不带构造函数的子类分配类变量
我正在为我的项目的数据库访问构建一个轻量级的模型层。 我希望它符合RubyonRails的精神。而不是实例化一个新模型 对象,我想使用单例方法。以下是我目前面临的问题: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;
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);
?>
谢谢,这正是我想要的!