難道子類靜態(tài)方法沒有辦法調(diào)用父類非靜態(tài)方法嗎?
Assurez-vous d'abord que le get_one_bysql de la classe parent est statique
à propos de l'utilisation de https://stackoverflow.com/que...
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);
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.
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é