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.
Kelas dalam PHP ialah rangka tindakan untuk mencipta objek. Ia mentakrifkan struktur dan gelagat yang akan dimiliki oleh objek kelas.
class ClassName { // Properties (Fields) // Methods }
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"; } }
Objek ialah contoh kelas. Anda mencipta objek daripada kelas menggunakan kata kunci baharu.
$objectName = new ClassName();
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();
Sifat (juga dikenali sebagai medan) mewakili keadaan objek, manakala kaedah mentakrifkan kelakuan objek.
Sifat ialah pembolehubah yang menyimpan data sesuatu objek.
class Car { public $color; public $model; public $year; }
Kaedah ialah fungsi yang ditakrifkan dalam kelas yang menerangkan gelagat objek.
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"; } }
Pembina ialah kaedah khas yang dipanggil secara automatik apabila objek dibuat seketika. Mereka memulakan objek yang baru dibuat.
Jika tiada pembina ditakrifkan, PHP menyediakan pembina lalai tanpa hujah.
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"; } }
Pembina berparameter membolehkan anda memulakan objek dengan nilai tertentu.
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"; } }
class Main { public function run() { $myCar = new Car("Red", "Tesla", 2022); $myCar->displayInfo(); } } $main = new Main(); $main->run();
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.
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"; } }
class Main { public function run() { $defaultCar = new Car(); $defaultCar->displayInfo(); $myCar = new Car("Red", "Tesla", 2022); $myCar->displayInfo(); } } $main = new Main(); $main->run();
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.
Pengubah suai akses dalam PHP mengawal keterlihatan dan kebolehcapaian sifat, kaedah dan pembina. PHP menyokong tiga pengubah akses utama:
class ClassName { // Properties (Fields) // Methods }
Ahli statik dalam PHP dikaitkan dengan kelas itu sendiri dan bukannya sebarang contoh tertentu. Mereka boleh diakses tanpa membuat objek kelas.
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"; } }
Kaedah statik diisytiharkan menggunakan kata kunci statik. Mereka tergolong dalam kelas dan bukannya contoh.
$objectName = new ClassName();
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();
Pengubah suai akses dalam PHP mengawal keterlihatan ahli kelas, memastikan pengkapsulan dan menguatkuasakan sekatan akses.
class Car { public $color; public $model; public $year; }
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"; } }
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"; } }
Pengubah suai bukan akses dalam PHP mengubah suai gelagat ahli kelas tanpa menjejaskan keterlihatan mereka.
class ClassName { // Properties (Fields) // Methods }
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"; } }
$objectName = new ClassName();
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.
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();
class Car { public $color; public $model; public $year; }
Dalam contoh ini:
Pengubah suai akses dalam PHP menentukan keterlihatan ahli kelas dalam subkelas dan bahagian lain program. Mereka memainkan peranan penting dalam pewarisan.
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"; } }
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"; } }
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 }
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"; } }
Kaedah akhir dalam PHP tidak boleh ditindih oleh subkelas dan kelas akhir tidak boleh dilanjutkan.
$objectName = new ClassName();
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.
class ClassName { // Properties (Fields) // Methods }
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"; } }
$objectName = new ClassName();
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();
class Car { public $color; public $model; public $year; }
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"; } }
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"; } }
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"; } }
class Main { public function run() { $myCar = new Car("Red", "Tesla", 2022); $myCar->displayInfo(); } } $main = new Main(); $main->run();
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.
Kelas abstrak berfungsi sebagai kelas asas untuk kelas terbitan. Ia mentakrifkan gelagat biasa untuk subkelasnya sambil membenarkan pelaksanaan kaedah khusus dalam subkelas tersebut.
Untuk mengisytiharkan kelas abstrak dalam PHP, gunakan kata kunci abstrak sebelum kata kunci kelas.
class ClassName { // Properties (Fields) // Methods }
Kaedah abstrak ditakrifkan dalam kelas abstrak tetapi tidak mempunyai badan. Subkelas mesti melaksanakan semua kaedah abstrak.
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"; } }
Kaedah konkrit dalam kelas abstrak mempunyai badan dan boleh diwarisi oleh subkelas seperti sedia ada atau ditindih.
$objectName = new ClassName();
Subkelas kelas abstrak mesti melaksanakan semua kaedah abstraknya melainkan subkelas itu juga diisytiharkan sebagai abstrak.
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();
Kelas abstrak tidak boleh dibuat secara langsung. Anda mesti menggunakan subkelas konkrit untuk mencipta tika.
class Car { public $color; public $model; public $year; }
Kelas abstrak boleh mempunyai pembina, dan pembinanya dipanggil apabila subkelas dijadikan instantiated.
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"; } }
Kelas abstrak boleh termasuk pembolehubah contoh dan kaedah konkrit, menyediakan kefungsian boleh guna semula untuk subkelas.
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"; } }
Kelas abstrak boleh mengandungi kaedah statik. Kaedah statik tergolong dalam kelas dan boleh dipanggil tanpa membuat seketika.
class ClassName { // Properties (Fields) // Methods }
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"; } }
$objectName = new ClassName();
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();
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.
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.
Untuk mengisytiharkan antara muka, gunakan kata kunci antara muka. Antara muka hanya boleh mengandungi pengisytiharan kaedah (tiada badan kaedah), pemalar dan kaedah abstrak.
class Car { public $color; public $model; public $year; }
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.
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"; } }
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.
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"; } }
Kelas dalam PHP boleh melaksanakan berbilang antara muka. Ini membolehkan lebih fleksibiliti dalam mereka bentuk sistem di mana kelas boleh mematuhi kontrak yang berbeza.
class ClassName { // Properties (Fields) // Methods }
Antara muka boleh mengandungi pemalar. Pemalar ini terbuka secara automatik dan boleh diakses oleh mana-mana kelas yang melaksanakan antara muka.
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"; } }
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.
$objectName = new ClassName();
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.
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();
class Car { public $color; public $model; public $year; }
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"; } }
Atas ialah kandungan terperinci PHP, Kelas dan Objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!