recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment une méthode statique PHP appelle-t-elle une méthode non statique de la classe parent ?

1. cela appelle la méthode de la classe parent :

2. Self appelle la méthode de la classe parent :

3. Parent appelle la méthode de classe parent :

难道子类静态方法没有办法调用父类非静态方法吗?

淡淡烟草味淡淡烟草味2802 Il y a quelques jours1139

répondre à tous(5)je répondrai

  • PHP中文网

    PHP中文网2017-06-08 11:03:40

    self::get_one_by_sql

    répondre
    0
  • 为情所困

    为情所困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...

    répondre
    0
  • 迷茫

    迷茫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);

    répondre
    0
  • 巴扎黑

    巴扎黑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.

    répondre
    0
  • 滿天的星座

    滿天的星座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é

    répondre
    0
  • Annulerrépondre