Maison > Questions et réponses > le corps du texte
难道子类静态方法没有办法调用父类非静态方法吗?
为情所困2017-06-08 11:03:40
Assurez-vous d'abord que le get_one_bysql de la classe parent est statique
À propos de l'utilisation de https://stackoverflow.com/que...
迷茫2017-06-08 11:03:40
Ce que vous utilisez est évidemment très irrégulier. Bien sûr, commençons par le point
Pour ajuster la méthode non statique de la classe parent, vous devez d'abord obtenir l'instance de classe
S'il y a un cache, récupérez simplement. directement, sinon, créez-en un
$instance = new self();
$totalCount = $instance->get_one_bysql($sqlstr);
巴扎黑2017-06-08 11:03:40
Ne peut pas être appelé.
Les méthodes non statiques doivent avoir l'objet $this, et cet objet ne peut pas être fourni lors de l'appel à partir de méthodes statiques.
滿天的星座2017-06-08 11:03:40
Ouvrez les commentaires et jouez pour le découvrir
<?php
class a{
public $ab = NULL;
public function d(){
var_dump($this->ab);
}
public function c($a,$b){
var_dump($a+$b);
}
}
class b extends a{
public static function t(){
// $this->d(); //Fatal error: Using $this when not in object context in D:\phpStudy\WWW\index.php on line 14
// $this->c(1,2); //Fatal error: Using $this when not in object context in D:\phpStudy\WWW\index.php on line 15
// self::d(); //Strict Standards: Non-static method a::d() should not be called statically in D:\phpStudy\WWW\index.php on line 16
//Fatal error: Using $this when not in object context in D:\phpStudy\WWW\index.php on line 5
// self::c(1,2); //Strict Standards: Non-static method a::c() should not be called statically in D:\phpStudy\WWW\index.php on line 18
// int(3)
// parent::d(); //Strict Standards: Non-static method a::d() should not be called statically in D:\phpStudy\WWW\index.php on line 20
// Fatal error: Using $this when not in object context in D:\phpStudy\WWW\index.php on line 5
// parent::c(1,2); //Strict Standards: Non-static method a::c() should not be called statically in D:\phpStudy\WWW\index.php on line 22
//int(3)
}
}
b::t();
Résumé : ceci est utilisé pour les appels d'instance. self, parent sont utilisés pour appeler des propriétés ou des méthodes statiques.
Le dernier phénomène étrange est que même si vous obtiendrez une erreur lorsque vous appellerez statiquement la méthode non statique de la classe parent pour traiter les données, int(3) est toujours affiché