我有以下问题;我的应用程序中有两个模型,但它们存储在我的数据库中的同一个表中。他们可以通过它们的type
列进行区分,第一个为0,第二个为1.继承静态方法
在我的应用程序中,我做了2个类,每个类型一个。但是,我只想创建一次查询,并使用静态成员来确定类型。 Basicly什么我想要实现应该是这样的:
class A
{
public $Description; //From the database
public static function GetAll()
{
$query = "SELECT * FROM letters WHERE type = " . self::getType();
echo $query;
}
private static function getType()
{
return 0;
}
}
class B
extends A
{
public $SomeOtherProperty; //B also has another property, which A doesnt have. Its stored an another table.
private static function getType()
{
return 1;
}
}
A::GetAll(10);
B::GetAll(10);
然而,PHP犯规支持静态memberwriting,这会导致这样的输出:
SELECT * FROM字母WHERE类型= 0
SELECT * FROM WHERE type = 0
什么是最好的方式来实现这样的结果,其中子类可以指定自己的类型?
不是一个真正的答案,但你应该避免使用这样的静态类。 PHP的静态调用基本上是将相关函数分组的一种方式,而不是使用继承和其他相关技术。 – Quamis
该类不是静态的,A具有模型的所有属性。但是,获取数据库中所有A的方法是静态的。 – TJHeuvel