Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah Panggilan ke Kaedah Bukan Statik Menggunakan Sintaks Kolon Berganda PHP Gagal?

Mengapakah Panggilan ke Kaedah Bukan Statik Menggunakan Sintaks Kolon Berganda PHP Gagal?

Linda Hamilton
Lepaskan: 2024-11-21 09:53:10
asal
477 orang telah melayarinya

Why Do Calls to Non-Static Methods Using PHP's Double Colon Syntax Fail?

Memanggil Kaedah Bukan Statik Menggunakan Sintaks Kolon Berganda

Dalam PHP, adalah mungkin untuk memanggil kaedah bukan statik menggunakan sintaks kaedah statik , kelas::kaedah. Walau bagaimanapun, mengapakah panggilan sedemikian gagal?

Pertimbangkan contoh berikut:

class Teste {
    public function fun1() {
        echo 'fun1';
    }
    public static function fun2() {
        echo "static fun2";
    }
}
Salin selepas log masuk

Memanggil Teste::fun2() berfungsi kerana ia adalah kaedah statik, tetapi memanggil Teste::fun1 () menimbulkan ralat.

Penjelasan terletak pada pengendalian longgar PHP terhadap kaedah statik vs bukan statik. Apabila kaedah bukan statik dipanggil secara statik dari dalam kaedah bukan statik kelas C, $ini di dalam kaedah bukan statik ns merujuk kepada contoh C.

Contohnya:

class A {
    public function test() {
        echo $this->name;
    }
}

class C {
    public function q() {
        $this->name = 'hello';
        A::test();
    }
}

$c = new C;
$c->q(); // prints hello
Salin selepas log masuk

Walaupun ini boleh menyebabkan tingkah laku yang tidak dijangka, ini bukan satu ralat melainkan pelaporan ralat yang ketat didayakan. Oleh itu, memanggil kaedah bukan statik secara statik menggunakan sintaks bertitik dua adalah tidak digalakkan, kerana ia boleh membawa kepada ralat atau tingkah laku yang mengelirukan.

Atas ialah kandungan terperinci Mengapakah Panggilan ke Kaedah Bukan Statik Menggunakan Sintaks Kolon Berganda PHP Gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan