Rumah > pembangunan bahagian belakang > tutorial php > Bolehkah saya Menggunakan Operator Bertitik Berganda (::) untuk Memanggil Kaedah Bukan Statik dalam PHP?

Bolehkah saya Menggunakan Operator Bertitik Berganda (::) untuk Memanggil Kaedah Bukan Statik dalam PHP?

Barbara Streisand
Lepaskan: 2024-11-19 17:00:03
asal
426 orang telah melayarinya

Can I Use the Double Colon (::) Operator to Call Non-Static Methods in PHP?

Invokasi Kaedah Bukan Statik Menggunakan Titik Bertitik Berganda (::)

Dalam PHP, kaedah bukan statik tidak boleh digunakan menggunakan sintaks kaedah statik (kelas::kaedah). Tingkah laku ini berpunca daripada sifat kaedah statik dan bukan statik yang berbeza.

Kaedah statik ditakrifkan dalam kelas tetapi tidak memerlukan tika kelas untuk dipanggil. Ia biasanya digunakan untuk fungsi utiliti atau pemalar. Sebaliknya, kaedah bukan statik memerlukan contoh kelas dibuat sebelum ia boleh diakses.

Sintaks bertindih bertindih (::) dikhaskan untuk menggunakan kaedah statik. Apabila anda cuba menggunakan kaedah bukan statik menggunakan sintaks ini, PHP menimbulkan ralat. Ralat ini bukan isu konfigurasi tetapi lebih kepada had asas bahasa.

Contoh:

class Teste {

    public function fun1() {
        echo 'fun1';
    }
    public static function fun2() {
        echo "static fun2" ;
    }
}

// Attempt to invoke non-static method using double colon syntax
Teste::fun1(); // Raises error

// Invocation of static method using double colon syntax
Teste::fun2(); // Works as expected
Salin selepas log masuk

Pertimbangan Khas

Walaupun bukan- kaedah statik tidak boleh digunakan menggunakan sintaks bertitik dua, terdapat satu pengecualian untuk peraturan ini. Dalam kaedah bukan statik, anda boleh menggunakan kaedah bukan statik bagi kelas yang sama menggunakan sintaks berikut:

$this->nonStaticMethod();
Salin selepas log masuk

Dalam konteks ini, kata kunci $this mewakili tika semasa kelas, membenarkan anda untuk mengakses kaedah bukan statik dari dalam contoh yang sama. Selain itu, jika anda memanggil kaedah bukan statik secara statik dari dalam kaedah bukan statik kelas yang sama, $this dalam kaedah yang digunakan akan merujuk kepada tika kelas panggilan.

Contoh:

class A {

    public $name;
    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

Adalah penting untuk ambil perhatian bahawa pengecualian kepada peraturan ini tidak selalu diingini. Pelaporan ralat yang ketat boleh mengakibatkan ralat jika anda cuba menggunakan sintaks ini secara tidak sengaja.

Atas ialah kandungan terperinci Bolehkah saya Menggunakan Operator Bertitik Berganda (::) untuk Memanggil Kaedah Bukan Statik dalam PHP?. 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