PHP, Kelas dan Objek

Barbara Streisand
Lepaskan: 2024-12-29 14:42:11
asal
891 orang telah melayarinya

PHP, Classes and Objects

Kelas dan Objek dalam PHP

PHP, seperti Java, menyokong pengaturcaraan berorientasikan objek dan menggunakan kelas serta objek sebagai blok binaan terasnya. Memahami konsep ini adalah penting untuk menguasai PHP. Panduan ini akan merangkumi semua yang anda perlu tahu tentang kelas dan objek dalam PHP.

Menentukan Kelas

Kelas dalam PHP ialah rangka tindakan untuk mencipta objek. Ia mentakrifkan struktur dan gelagat yang akan dimiliki oleh objek kelas.

Sintaks

class ClassName {
    // Properties (Fields)
    // Methods
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Contoh

class Car {
    // Properties
    public $color;
    public $model;
    public $year;

    // Methods
    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Mencipta Objek

Objek ialah contoh kelas. Anda mencipta objek daripada kelas menggunakan kata kunci baharu.

Sintaks

$objectName = new ClassName();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Contoh

class Main {
    public function run() {
        $myCar = new Car(); // Creating an object of the Car class
        $myCar->color = "Red";
        $myCar->model = "Tesla";
        $myCar->year = 2022;
        $myCar->displayInfo();
    }
}

$main = new Main();
$main->run();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sifat dan Kaedah

Sifat (juga dikenali sebagai medan) mewakili keadaan objek, manakala kaedah mentakrifkan kelakuan objek.

Hartanah

Sifat ialah pembolehubah yang menyimpan data sesuatu objek.

Contoh

class Car {
    public $color;
    public $model;
    public $year;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kaedah

Kaedah ialah fungsi yang ditakrifkan dalam kelas yang menerangkan gelagat objek.

Contoh

class Car {
    public $color;
    public $model;
    public $year;

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Pembina

Pembina ialah kaedah khas yang dipanggil secara automatik apabila objek dibuat seketika. Mereka memulakan objek yang baru dibuat.

Pembina Lalai

Jika tiada pembina ditakrifkan, PHP menyediakan pembina lalai tanpa hujah.

Contoh

class Car {
    public $color;
    public $model;
    public $year;

    // Default constructor
    public function __construct() {
    }

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Pembina Berparameter

Pembina berparameter membolehkan anda memulakan objek dengan nilai tertentu.

Contoh

class Car {
    public $color;
    public $model;
    public $year;

    // Parameterized constructor
    public function __construct($color, $model, $year) {
        $this->color = $color;
        $this->model = $model;
        $this->year = $year;
    }

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk

Menggunakan Pembina Parameter

class Main {
    public function run() {
        $myCar = new Car("Red", "Tesla", 2022);
        $myCar->displayInfo();
    }
}

$main = new Main();
$main->run();
Salin selepas log masuk
Salin selepas log masuk

Lebihan Pembina

PHP tidak menyokong kaedah lebih muatan secara asli seperti Java, tetapi anda boleh mensimulasikannya menggunakan parameter pilihan atau dengan mengendalikan hujah secara manual dalam satu pembina.

Contoh

class Car {
    public $color;
    public $model;
    public $year;

    // Simulating constructor overloading
    public function __construct($color = "Unknown", $model = "Unknown", $year = 0) {
        $this->color = $color;
        $this->model = $model;
        $this->year = $year;
    }

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk

Menggunakan Pembina Terlebih Beban Simulasi

class Main {
    public function run() {
        $defaultCar = new Car();
        $defaultCar->displayInfo();

        $myCar = new Car("Red", "Tesla", 2022);
        $myCar->displayInfo();
    }
}

$main = new Main();
$main->run();
Salin selepas log masuk

Enkapsulasi, Pengubahsuai Akses dan Ahli Statik dalam PHP

Enkapsulasi

Encapsulation dalam PHP ialah amalan menghimpun data (sifat) dan kaedah (fungsi) dalam kelas. Ia memastikan keadaan dalaman sesuatu objek selamat daripada gangguan dan penyalahgunaan luar.

Akses Pengubahsuai

Pengubah suai akses dalam PHP mengawal keterlihatan dan kebolehcapaian sifat, kaedah dan pembina. PHP menyokong tiga pengubah akses utama:

  • awam: Boleh diakses dari mana-mana sahaja.
  • dilindungi: Boleh diakses dalam kelas, subkelas dan pakej yang sama.
  • peribadi: Hanya boleh diakses dalam kelas yang menentukan.

Contoh Penggunaan:

class ClassName {
    // Properties (Fields)
    // Methods
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ahli Statik

Ahli statik dalam PHP dikaitkan dengan kelas itu sendiri dan bukannya sebarang contoh tertentu. Mereka boleh diakses tanpa membuat objek kelas.

Sifat Statik:

Sifat statik dikongsi antara semua kejadian kelas. Ia diisytiharkan menggunakan kata kunci statik.

class Car {
    // Properties
    public $color;
    public $model;
    public $year;

    // Methods
    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kaedah Statik:

Kaedah statik diisytiharkan menggunakan kata kunci statik. Mereka tergolong dalam kelas dan bukannya contoh.

$objectName = new ClassName();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Mengakses Ahli Statik:

Ahli statik diakses menggunakan nama kelas, bukan melalui objek.

class Main {
    public function run() {
        $myCar = new Car(); // Creating an object of the Car class
        $myCar->color = "Red";
        $myCar->model = "Tesla";
        $myCar->year = 2022;
        $myCar->displayInfo();
    }
}

$main = new Main();
$main->run();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Akses Pengubahsuai dalam PHP

Pengubah suai akses dalam PHP mengawal keterlihatan ahli kelas, memastikan pengkapsulan dan menguatkuasakan sekatan akses.

Jenis Pengubahsuai Akses

  1. awam
  2. dilindungi
  3. peribadi

1. awam

  • Boleh diakses daripada: Di mana-mana sahaja.
  • Penggunaan: Gunakan awam untuk ahli yang perlu diakses secara meluas.
class Car {
    public $color;
    public $model;
    public $year;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

2. dilindungi

  • Boleh diakses daripada: Dalam kelas dan subkelasnya.
  • Penggunaan: Gunakan dilindungi untuk ahli yang hanya boleh diakses dalam hierarki kelas.
class Car {
    public $color;
    public $model;
    public $year;

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

3. persendirian

  • Boleh diakses daripada: Hanya dalam kelas.
  • Penggunaan: Gunakan persendirian untuk ahli yang tidak boleh diakses di luar kelas yang menentukan.
class Car {
    public $color;
    public $model;
    public $year;

    // Default constructor
    public function __construct() {
    }

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Pengubah Suai Bukan Akses dalam PHP

Pengubah suai bukan akses dalam PHP mengubah suai gelagat ahli kelas tanpa menjejaskan keterlihatan mereka.

Jenis Pengubahsuai Bukan Akses

  1. statik
  2. akhir
  3. abstrak

1. statik

  • Penggunaan: Mengisytiharkan sifat dan kaedah yang dimiliki oleh kelas dan bukannya tika.
  • Contoh:
class ClassName {
    // Properties (Fields)
    // Methods
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

2. muktamad

  • Penggunaan: Menghalang pengubahsuaian lanjut kaedah atau pewarisan kelas.
  • Pembolehubah: PHP tidak menyokong pembolehubah akhir.
  • Kaedah: Kaedah akhir tidak boleh ditindih.
  • Kelas: Kelas akhir tidak boleh dilanjutkan.
  • Contoh:
class Car {
    // Properties
    public $color;
    public $model;
    public $year;

    // Methods
    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

3. abstrak

  • Penggunaan: Mengisytiharkan kelas dan kaedah yang tidak lengkap dan mesti dilaksanakan dalam subkelas.
  • Kelas Abstrak: Tidak boleh dibuat seketika.
  • Kaedah Abstrak: Diisytiharkan tanpa badan dan mesti dilaksanakan oleh subkelas.
  • Contoh:
$objectName = new ClassName();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Warisan dalam PHP dan Pengubahsuai Akses

Warisan

Pewarisan dalam PHP ialah mekanisme di mana satu kelas (subclass) boleh mewarisi sifat dan kaedah kelas lain (superclass). Ia memudahkan penggunaan semula kod dan membolehkan penciptaan hubungan hierarki antara kelas.

Sintaks untuk Warisan

class Main {
    public function run() {
        $myCar = new Car(); // Creating an object of the Car class
        $myCar->color = "Red";
        $myCar->model = "Tesla";
        $myCar->year = 2022;
        $myCar->displayInfo();
    }
}

$main = new Main();
$main->run();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Contoh

class Car {
    public $color;
    public $model;
    public $year;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini:

  • Haiwan ialah superclass dengan sifat $name dan kaedah eat().
  • Dog ialah subkelas yang mewarisi $name dan eat() daripada Animal dan menambah kaedahnya sendiri bark().

Akses Pengubahsuai dalam Warisan

Pengubah suai akses dalam PHP menentukan keterlihatan ahli kelas dalam subkelas dan bahagian lain program. Mereka memainkan peranan penting dalam pewarisan.

Akses Pengubah Suai untuk Atribut dan Kaedah Biasa

  • awam: Boleh diakses dari mana-mana sahaja.
  • dilindungi: Boleh diakses dalam kelas, subkelas dan dalam pakej yang sama.
  • peribadi: Hanya boleh diakses dalam kelas di mana ia diisytiharkan.
class Car {
    public $color;
    public $model;
    public $year;

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Akses Pengubah Suai untuk Atribut dan Kaedah Statik

Ahli statik dalam PHP dikaitkan dengan kelas dan bukannya sebarang contoh tertentu. Mereka mengikut peraturan akses yang sama seperti ahli bukan statik dalam warisan.

class Car {
    public $color;
    public $model;
    public $year;

    // Default constructor
    public function __construct() {
    }

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Adakah Kaedah Statik Diwarisi?

Kaedah statik diwarisi dalam PHP tetapi tidak boleh ditindih dalam erti kata yang sama seperti kaedah contoh. Apabila subkelas mentakrifkan kaedah statik dengan nama yang sama, ia menyembunyikan kaedah statik kelas induk.

class ClassName {
    // Properties (Fields)
    // Methods
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Akses Pengubahsuai untuk Kaedah Abstrak

Kaedah abstrak dalam PHP mesti ditakrifkan dalam kelas abstrak. Keterlihatan kaedah abstrak dalam superclass menentukan keterlihatannya dalam subkelas. Subkelas mesti melaksanakan kaedah abstrak dengan pengubah suai akses yang sama atau kurang ketat.

class Car {
    // Properties
    public $color;
    public $model;
    public $year;

    // Methods
    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Akses Pengubah Suai untuk Atribut dan Kaedah Akhir

Kaedah akhir dalam PHP tidak boleh ditindih oleh subkelas dan kelas akhir tidak boleh dilanjutkan.

  • Kaedah Akhir: Cegah kaedah mengatasi.
  • Kelas Akhir: Cegah pewarisan.
$objectName = new ClassName();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sintaks untuk Mengisytiharkan Kelas Tahap Atas dalam PHP

Dalam PHP, pengisytiharan kelas peringkat atas (kelas tidak bersarang di dalam kelas lain) mengikut susunan kata kunci tertentu. Pengisytiharan boleh termasuk pengubah suai akses, kata kunci abstrak atau akhir dan kata kunci kelas.

Kata kunci yang boleh digunakan:

  1. Pengubah suai akses: awam
  2. Jenis kelas: abstrak atau muktamad

Pesanan:

class ClassName {
    // Properties (Fields)
    // Methods
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sintaks:

class Car {
    // Properties
    public $color;
    public $model;
    public $year;

    // Methods
    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Nota Penting:

  1. PHP menganggap awam sebagai pengubah suai akses lalai jika tiada yang dinyatakan.
  2. Kelas tidak boleh abstrak dan muktamad serentak.
  3. pengubah suai akses dilindungi dan peribadi tidak dibenarkan untuk kelas peringkat atasan.

Contoh:

$objectName = new ClassName();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sintaks untuk Mengisytiharkan Atribut dalam Kelas dalam PHP

Kata kunci yang boleh digunakan:

  1. Pengubah suai akses: awam, dilindungi, peribadi
  2. Pengubah suai statik: statik
  3. Pengubah suai tidak berubah: baca sahaja (diperkenalkan dalam PHP 8.1)

Pesanan:

class Main {
    public function run() {
        $myCar = new Car(); // Creating an object of the Car class
        $myCar->color = "Red";
        $myCar->model = "Tesla";
        $myCar->year = 2022;
        $myCar->displayInfo();
    }
}

$main = new Main();
$main->run();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sintaks:

class Car {
    public $color;
    public $model;
    public $year;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Nota Penting:

  1. Atribut lalai kepada umum jika tiada pengubah suai akses ditentukan.
  2. atribut statik tergolong dalam kelas dan bukannya kejadian.
  3. atribut baca sahaja hanya boleh dimulakan sekali, sama ada semasa pengisytiharan atau dalam pembina (PHP 8.1).

Contoh:

class Car {
    public $color;
    public $model;
    public $year;

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sintaks untuk Mengisytiharkan Kaedah dalam Kelas dalam PHP

Kata kunci yang boleh digunakan:

  1. Pengubah suai akses: awam, dilindungi, peribadi
  2. Pengubah suai statik: statik
  3. Pengubah suai akhir: muktamad
  4. Pengubah suai abstrak: abstrak

Pesanan:

class Car {
    public $color;
    public $model;
    public $year;

    // Default constructor
    public function __construct() {
    }

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sintaks:

class Car {
    public $color;
    public $model;
    public $year;

    // Parameterized constructor
    public function __construct($color, $model, $year) {
        $this->color = $color;
        $this->model = $model;
        $this->year = $year;
    }

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk

Nota Penting:

  1. Jika tiada pengubah suai akses dinyatakan, kaedah tersebut adalah awam secara lalai.
  2. kaedah statik tergolong dalam kelas, bukan kejadian.
  3. kaedah akhir tidak boleh ditindih dalam subkelas.
  4. kaedah abstrak mesti diisytiharkan dalam kelas abstrak dan tidak boleh mempunyai badan.

Contoh:

class Main {
    public function run() {
        $myCar = new Car("Red", "Tesla", 2022);
        $myCar->displayInfo();
    }
}

$main = new Main();
$main->run();
Salin selepas log masuk
Salin selepas log masuk

Kelas Abstrak dalam PHP

Kelas abstrak dalam PHP adalah serupa dengan rakan sejawatannya di Java, digunakan untuk menentukan pelan tindakan untuk kelas lain. Ia mengandungi kedua-dua kaedah abstrak (kaedah tanpa pelaksanaan) dan kaedah konkrit (kaedah dengan pelaksanaan). Kelas abstrak diisytiharkan menggunakan kata kunci abstrak dan tidak boleh digunakan secara langsung.


1. Pengenalan kepada Kelas Abstrak

Kelas abstrak berfungsi sebagai kelas asas untuk kelas terbitan. Ia mentakrifkan gelagat biasa untuk subkelasnya sambil membenarkan pelaksanaan kaedah khusus dalam subkelas tersebut.


2. Mengisytiharkan Kelas Abstrak

Untuk mengisytiharkan kelas abstrak dalam PHP, gunakan kata kunci abstrak sebelum kata kunci kelas.

Contoh:

class ClassName {
    // Properties (Fields)
    // Methods
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

3. Kaedah Abstrak

Kaedah abstrak ditakrifkan dalam kelas abstrak tetapi tidak mempunyai badan. Subkelas mesti melaksanakan semua kaedah abstrak.

Contoh:

class Car {
    // Properties
    public $color;
    public $model;
    public $year;

    // Methods
    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

4. Kaedah Konkrit

Kaedah konkrit dalam kelas abstrak mempunyai badan dan boleh diwarisi oleh subkelas seperti sedia ada atau ditindih.

Contoh:

$objectName = new ClassName();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

5. Mencipta Subkelas

Subkelas kelas abstrak mesti melaksanakan semua kaedah abstraknya melainkan subkelas itu juga diisytiharkan sebagai abstrak.

Contoh:

class Main {
    public function run() {
        $myCar = new Car(); // Creating an object of the Car class
        $myCar->color = "Red";
        $myCar->model = "Tesla";
        $myCar->year = 2022;
        $myCar->displayInfo();
    }
}

$main = new Main();
$main->run();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

6. Mengadakan Kelas Abstrak

Kelas abstrak tidak boleh dibuat secara langsung. Anda mesti menggunakan subkelas konkrit untuk mencipta tika.

Contoh:

class Car {
    public $color;
    public $model;
    public $year;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

7. Pembina dalam Kelas Abstrak

Kelas abstrak boleh mempunyai pembina, dan pembinanya dipanggil apabila subkelas dijadikan instantiated.

Contoh:

class Car {
    public $color;
    public $model;
    public $year;

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

8. Kelas Abstrak dengan Medan dan Kaedah

Kelas abstrak boleh termasuk pembolehubah contoh dan kaedah konkrit, menyediakan kefungsian boleh guna semula untuk subkelas.

Contoh:

class Car {
    public $color;
    public $model;
    public $year;

    // Default constructor
    public function __construct() {
    }

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

9. Kaedah Statik dalam Kelas Abstrak

Kelas abstrak boleh mengandungi kaedah statik. Kaedah statik tergolong dalam kelas dan boleh dipanggil tanpa membuat seketika.

Contoh:

class ClassName {
    // Properties (Fields)
    // Methods
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sintaks untuk Mengisytiharkan Kelas Abstrak dalam PHP

Kata kunci yang boleh digunakan:

  1. abstrak
  2. awam, dilindungi, peribadi (pengubah suai akses)

Pesanan:

class Car {
    // Properties
    public $color;
    public $model;
    public $year;

    // Methods
    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Contoh:

Kelas Abstrak dengan Kaedah Abstrak dan Konkrit

$objectName = new ClassName();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kelas Abstrak dengan Medan dan Kaedah Akhir

class Main {
    public function run() {
        $myCar = new Car(); // Creating an object of the Car class
        $myCar->color = "Red";
        $myCar->model = "Tesla";
        $myCar->year = 2022;
        $myCar->displayInfo();
    }
}

$main = new Main();
$main->run();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Nota Penting:

  1. Kelas abstrak tidak boleh dibuat secara langsung.
  2. Kaedah abstrak mesti dilaksanakan oleh subkelas bukan abstrak.
  3. Subkelas yang tidak melaksanakan semua kaedah abstrak juga mesti diisytiharkan sebagai abstrak.
  4. Kaedah konkrit dalam kelas abstrak adalah pilihan untuk subkelas untuk menimpa.
  5. Kelas abstrak boleh mempunyai pembina, sifat dan pemalar.
  6. Kelas abstrak boleh menggunakan sebarang pengubah keterlihatan untuk kaedah dan sifatnya.

Antara muka dalam PHP

Antara muka dalam PHP mentakrifkan kontrak untuk kelas yang melaksanakannya. Ia menentukan kaedah yang mesti dilaksanakan oleh kelas, tetapi tidak menyediakan sebarang pelaksanaan kaedah itu sendiri. Antara muka membenarkan kod yang lebih fleksibel dan modular, membolehkan kelas mematuhi set tandatangan kaedah biasa, tanpa mengira hierarki warisannya.


1. Pengenalan kepada Antara Muka

Antara muka dalam PHP adalah serupa dengan kelas abstrak, tetapi ia hanya boleh mentakrifkan tandatangan kaedah tanpa sebarang pelaksanaan. Kelas yang melaksanakan antara muka mesti menyediakan pelaksanaan untuk semua kaedah yang diisytiharkan dalam antara muka. Kelas boleh melaksanakan berbilang antara muka, menjadikan antara muka sebagai bahagian penting sokongan PHP untuk pewarisan berbilang tingkah laku.


2. Mengisytiharkan Antara Muka

Untuk mengisytiharkan antara muka, gunakan kata kunci antara muka. Antara muka hanya boleh mengandungi pengisytiharan kaedah (tiada badan kaedah), pemalar dan kaedah abstrak.

Contoh:

class Car {
    public $color;
    public $model;
    public $year;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

3. Melaksanakan Antara Muka

Kelas yang melaksanakan antara muka mesti menyediakan pelaksanaan untuk semua kaedah yang diisytiharkan dalam antara muka. Kelas boleh melaksanakan berbilang antara muka, memisahkannya dengan koma.

Contoh:

class Car {
    public $color;
    public $model;
    public $year;

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

4. Tandatangan Kaedah Antara Muka

Kaedah dalam antara muka tidak boleh mempunyai badan, dan ia mestilah awam. Apabila kelas melaksanakan antara muka, ia mesti melaksanakan kaedah ini betul-betul seperti yang diisytiharkan dalam antara muka, termasuk tandatangan kaedah.

Contoh:

class Car {
    public $color;
    public $model;
    public $year;

    // Default constructor
    public function __construct() {
    }

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

5. Pelaksanaan Pelbagai Antaramuka

Kelas dalam PHP boleh melaksanakan berbilang antara muka. Ini membolehkan lebih fleksibiliti dalam mereka bentuk sistem di mana kelas boleh mematuhi kontrak yang berbeza.

Contoh:

class ClassName {
    // Properties (Fields)
    // Methods
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

6. Pemalar Antara Muka

Antara muka boleh mengandungi pemalar. Pemalar ini terbuka secara automatik dan boleh diakses oleh mana-mana kelas yang melaksanakan antara muka.

Contoh:

class Car {
    // Properties
    public $color;
    public $model;
    public $year;

    // Methods
    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

7. Warisan Antara Muka

Antara muka boleh memanjangkan antara muka yang lain. Ini bermakna antara muka anak mewarisi semua kaedah (tandatangan) daripada antara muka induk, dan juga boleh menambah kaedah baharu. Kelas yang melaksanakan antara muka kanak-kanak mesti melaksanakan semua kaedah daripada kedua-dua antara muka ibu bapa dan anak.

Contoh:

$objectName = new ClassName();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

8. Kaedah Statik dalam Antara Muka

Antara muka tidak boleh mengandungi kaedah statik. Semua kaedah yang diisytiharkan dalam antara muka mestilah kaedah contoh. Kaedah statik tidak dibenarkan dalam antara muka, kerana antara muka mentakrifkan kontrak peringkat contoh untuk kelas pelaksana.


Sintaks untuk Mengisytiharkan dan Melaksanakan Antara Muka dalam PHP

Kata kunci yang boleh digunakan:

  1. antara muka
  2. awam

Pesanan:

class Main {
    public function run() {
        $myCar = new Car(); // Creating an object of the Car class
        $myCar->color = "Red";
        $myCar->model = "Tesla";
        $myCar->year = 2022;
        $myCar->displayInfo();
    }
}

$main = new Main();
$main->run();
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Contoh:

Antara muka dengan Tandatangan Kaedah

class Car {
    public $color;
    public $model;
    public $year;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Antara Muka dengan Pelbagai Pelaksanaan

class Car {
    public $color;
    public $model;
    public $year;

    public function displayInfo() {
        echo "Model: " . $this->model . "\n";
        echo "Color: " . $this->color . "\n";
        echo "Year: " . $this->year . "\n";
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Nota Penting:

  1. Kaedah Antara Muka: Kaedah dalam antara muka mestilah terbuka dan tidak boleh mempunyai badan.
  2. Melaksanakan Pelbagai Antara Muka: Kelas boleh melaksanakan berbilang antara muka, memisahkannya dengan koma.
  3. Pengubah Suai Akses: Semua kaedah dalam antara muka adalah terbuka secara tersirat. Pengubah suai akses seperti peribadi atau dilindungi tidak dibenarkan.
  4. Pemalar Antara Muka: Antara muka boleh mengisytiharkan pemalar yang secara automatik terbuka dan boleh diakses dengan melaksanakan kelas.
  5. Warisan Antara Muka: Antara muka boleh memanjangkan satu atau lebih antara muka, menggabungkan tandatangan kaedah mereka.
  6. Kaedah Statik: Antara muka tidak boleh mengandungi kaedah statik.
  7. Melaksanakan Semua Kaedah: Kelas mesti melaksanakan semua kaedah yang ditakrifkan oleh antara muka yang dilaksanakannya.

Atas ialah kandungan terperinci PHP, Kelas dan Objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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