Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Perbezaan antara kaedah statik dan kaedah bukan statik kelas dalam PHP8.0

Perbezaan antara kaedah statik dan kaedah bukan statik kelas dalam PHP8.0

WBOY
WBOYasal
2023-05-14 08:13:351258semak imbas

Dengan perkembangan teknologi Internet yang berterusan, PHP, sebagai bahasa pembangunan yang digunakan secara meluas, juga sentiasa dikemas kini dan diulang. Dalam versi PHP8.0 terkini, terdapat beberapa perubahan baharu dalam perbezaan antara kaedah statik dan kaedah bukan statik kelas. Artikel ini akan memperkenalkan secara terperinci perbezaan antara kaedah statik dan kaedah bukan statik kelas dalam PHP8.0.

1. Kaedah statik kelas

Kaedah statik kelas tidak perlu membuat instantiat objek apabila digunakan secara langsung menggunakan nama kelas dan nama kaedah dalam versi PHP8.0. kaedah statik kelas Cara kaedah statik ditakrifkan juga agak berubah berbanding sebelum ini. Dalam versi sebelumnya, mentakrifkan kaedah statik memerlukan penambahan kata kunci "statik" sebelum badan kaedah, tetapi ini tidak diperlukan dalam PHP8.0 Dalam erti kata lain, kaedah statik kelas dalam PHP8.0 boleh digunakan dengan kaedah bukan statik Takrifkannya dengan cara yang sama.

Kaedah statik kelas boleh dipanggil melalui kedua-dua nama kelas dan objek, tetapi ahli dan kaedah bukan statik tidak boleh diakses. Pada masa yang sama, memandangkan kaedah statik kelas tidak memerlukan instantiasi objek, anda boleh menggunakan kata kunci seperti diri, statik dan ibu bapa untuk merujuk kepada ahli dan kaedah kelas.

Berikut ialah kod sampel ringkas yang menunjukkan penggunaan kaedah statik kelas:

class Test {
    public static $name = 'PHP8.0';
    
    public static function printName() {
        echo self::$name;
    }
}

// 调用类的静态方法
Test::printName(); // 输出 PHP8.0

2 Kaedah bukan statik kelas

Kaedah bukan statik sesuatu kelas mesti Dengan membuat seketika objek untuk membuat panggilan, anda boleh mengakses ahli statik dan kaedah kelas. Dalam PHP8.0, berbanding dengan versi sebelumnya, cara kaedah bukan statik kelas ditakrifkan tidak berubah.

Berikut ialah contoh kod ringkas yang menunjukkan penggunaan kaedah bukan statik kelas:

class Person {
    public $name;
    
    public function setName($name) {
        $this->name = $name;
    }
    
    public function getName() {
        echo $this->name;
    }
}

// 实例化对象
$person = new Person();

// 调用类的非静态方法
$person->setName('Tom');
$person->getName(); // 输出 Tom

3 Atribut statik kelas

Selain itu kaedah statik kelas dan Selain kaedah bukan statik, PHP8.0 juga memperkenalkan atribut statik kelas. Dalam versi sebelumnya, penggunaan sifat statik memerlukan pengisytiharan menggunakan kata kunci "statik" dalam definisi kelas, tetapi ini tidak diperlukan dalam PHP8.0 Dalam erti kata lain, ia boleh diisytiharkan dengan cara yang sama seperti sifat bukan statik. Pada masa yang sama, kerana sifat statik kelas mengikut kelas, ia boleh dibaca dan diubah suai di mana-mana lokasi tanpa membuat instantiating objek.

Berikut ialah contoh kod ringkas yang menunjukkan penggunaan atribut statik kelas:

class User {
    public static $count = 0;
    
    public function __construct() {
        self::$count++;
    }
    
    public static function getCount() {
        echo self::$count;
    }
}

// 创造对象
$newUser1 = new User();
$newUser2 = new User();

// 调用类的静态方法,获取对象数量
User::getCount(); // 输出 2

4. Ringkasan

Ringkasnya, kelas dalam PHP8.0 Perbezaannya antara kaedah statik dan kaedah bukan statik tidak banyak berubah, cuma cara definisi sahaja yang berubah. Pada masa yang sama, PHP8.0 telah menambah atribut statik kelas untuk memudahkan kami menyimpan dan berkongsi data tanpa menginstant objek. Dalam pembangunan sebenar, anda harus memilih untuk menggunakan kaedah statik, kaedah bukan statik atau sifat statik kelas mengikut keadaan tertentu untuk mencapai kesan optimum.

Atas ialah kandungan terperinci Perbezaan antara kaedah statik dan kaedah bukan statik kelas dalam PHP8.0. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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