Bagaimanakah kaedah statik PHP memanggil kaedah bukan statik kelas induk?
淡淡烟草味
淡淡烟草味 2017-06-08 11:01:40
0
5
1066

1 ini memanggil kaedah kelas induk:

2. Sendiri memanggil kaedah kelas induk:

3 Ibu bapa memanggil kaedah kelas ibu bapa:

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

淡淡烟草味
淡淡烟草味

membalas semua(5)
Ty80

self::get_one_by_sql

为情所困

Mula-mula pastikan get_one_bysql kelas induk adalah statik

Mengenai penggunaan https://stackoverflow.com/que...

迷茫

Apa yang anda gunakan jelas sangat tidak teratur Sudah tentu, mari kita sampai ke titik pertama
Untuk melaraskan kaedah bukan statik kelas induk, pertama anda perlu mendapatkan contoh kelas
Jika ada cache, dapatkan sahaja. ia secara langsung, jika tidak, buat satu

$instance = new self();
$totalCount = $instance->get_one_bysql($sqlstr);
巴扎黑

Tidak boleh dipanggil.

Kaedah bukan statik perlu mempunyai objek $this, dan objek ini tidak boleh disediakan apabila memanggil daripada kaedah statik.

滿天的星座

Buka komen dan main-main untuk mengetahui

<?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();

Ringkasan: ini digunakan sebagai contoh panggilan. sendiri, ibu bapa digunakan untuk memanggil sifat atau kaedah statik.
Fenomena pelik yang terakhir ialah walaupun anda akan mendapat ralat apabila anda secara statik memanggil kaedah bukan statik kelas induk untuk memproses data, int(3) masih output

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan