我有一个父母班和一个孩子班,如下
class Objet {
../..
static function findByNumeroDeSerie($table, $numeroDeSerie) {
$db = new Db();
$query = $db->prepare("SELECT * from $table WHERE numeroDeSerie = :numeroDeSerie");
$query->bindValue(':numeroDeSerie', $numeroDeSerie, PDO::PARAM_INT);
$query->execute();
while($row = $query->fetch()) {
return new Objet($row);
}
}
}
class Produit extends Objet {
//
}
当我调用method时Produit::findByNumeroDeSerie($table, $numeroDeSerie)
,
$produit = Produit::findByNumeroDeSerie("produits", $_GET['numeroDeSerie']);
echo get_class($produit); // echoes Object
它实例化了Objet
一个Produit
,而不是,这意味着我无法访问Produit
实例化对象上的getter方法。
知道为什么吗?我是否需要在Objet的每个子类中重写findByNumeroDeSerie方法?
你写了:
return new Objet($row);
所以你有对象。如果要findByNumeroDeSerie
返回这样的产品使用get_called_class()
功能:
<?php
class A {
static public function foo() {
$className = get_called_class();
return new $className();
}
}
class B extends A {
}
var_dump(get_class(B::foo())); // string(1) "B"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句