Pengaturcaraan Berorientasikan Objek (OOP, pengaturcaraan berorientasikan objek) ialah seni bina pengaturcaraan komputer Salah satu prinsip asas OOP ialah program komputer terdiri daripada satu unit atau objek yang boleh berfungsi sebagai subrutin tiga matlamat kejuruteraan perisian: kebolehgunaan semula, fleksibiliti, dan kebolehskalaan. Untuk merealisasikan operasi keseluruhan, setiap objek boleh menerima maklumat, memproses data dan menghantar maklumat ke objek lain. Berorientasikan objek sentiasa menjadi topik hangat dalam bidang pembangunan perisian Pertama sekali, berorientasikan objek adalah selaras dengan peraturan umum bagaimana manusia melihat sesuatu. Kedua, penggunaan kaedah berorientasikan objek membolehkan setiap bahagian sistem melaksanakan tugasnya dan melaksanakan tugasnya. Ini membuka pintu kepada pengaturcara untuk menulis kod yang lebih ringkas, lebih mudah diselenggara dan lebih boleh digunakan semula. Sesetengah orang mengatakan bahawa PHP bukanlah bahasa berorientasikan objek yang benar, dan ini adalah benar. PHP adalah bahasa hibrid, anda boleh menggunakan OOP atau pengaturcaraan prosedur tradisional. Walau bagaimanapun, untuk projek besar, anda mungkin perlu menggunakan OOP tulen untuk mengisytiharkan kelas dalam PHP dan hanya menggunakan objek dan kelas dalam projek anda. Saya tidak akan menerangkan secara terperinci tentang konsep ini kerana sebab utama mengapa ramai orang dan rakan menjauhi pengaturcaraan berorientasikan objek ialah mereka tidak dapat memahaminya apabila mereka bersentuhan dengannya, jadi mereka tidak mahu belajar itu lagi. Tunggu sehingga pembaca telah membaca kandungan keseluruhannya.
Memandangkan kita sedang belajar berorientasikan objek, mari kita fahami dahulu apa itu berorientasikan proses.
Berorientasikan proses
"Berorientasikan Prosedur" ialah idea pengaturcaraan berpusatkan proses. "Berorientasikan proses" juga boleh dipanggil idea pengaturcaraan "berorientasikan rekod" Mereka tidak menyokong ciri "berorientasikan objek" yang kaya (seperti warisan, polimorfisme), dan mereka tidak membenarkan pencampuran keadaan berterusan dan logik domain.
adalah untuk menganalisis langkah-langkah yang diperlukan untuk menyelesaikan masalah, dan kemudian menggunakan fungsi untuk melaksanakan langkah-langkah ini langkah demi langkah apabila menggunakannya, hanya memanggilnya satu demi satu.
Kelebihan penting orientasi proses
Kebolehbacaan
Kebolehgunaan semula< . masalah, dan kemudian gunakan fungsi untuk melaksanakan langkah-langkah ini langkah demi langkah Apabila menggunakannya, panggil sahaja satu demi satu.
Sebagai contoh, contoh berikut
Ia boleh dilihat dengan jelas bahawa berorientasikan objek membahagikan masalah mengikut fungsi, bukan langkah. Ia juga melukis permainan catur kelakuan sedemikian tersebar dalam pelbagai langkah dalam reka bentuk berorientasikan proses, dan versi lukisan yang berbeza mungkin muncul, kerana biasanya pereka akan membuat pelbagai penyederhanaan dengan mengambil kira situasi sebenar. Dalam reka bentuk berorientasikan objek, lukisan hanya boleh muncul dalam objek papan catur, dengan itu memastikan perpaduan lukisan.
Hubungan antara kelas dan objek
Objek: Objek ialah apa sahaja yang orang mahu kaji Ia bukan sahaja boleh mewakili perkara tertentu, tetapi juga peraturan, rancangan atau peristiwa yang abstrak. Objek mempunyai keadaan, dan objek menggunakan nilai data untuk menerangkan keadaannya. Objek juga mempunyai operasi, yang digunakan untuk mengubah keadaan objek Objek dan operasinya adalah tingkah laku objek. Objek menyedari gabungan data dan operasi, supaya data dan operasi dirangkumkan dalam kesatuan objek.
Kelas: Abstraksi objek dengan ciri yang sama (elemen data) dan tingkah laku (fungsi) ialah kelas. Oleh itu, pengabstrakan objek ialah kelas, dan pengukuhan kelas ialah objek Ia juga boleh dikatakan bahawa contoh kelas adalah objek, dan kelas sebenarnya adalah jenis data. Kelas mempunyai atribut, yang merupakan abstraksi keadaan objek, dan menggunakan struktur data untuk menerangkan atribut kelas. Kelas mempunyai operasi, yang merupakan abstraksi kelakuan objek, diterangkan oleh nama operasi dan kaedah untuk melaksanakan operasi.
Hubungan antara objek dan kelas:
Hubungan antara kelas dan objek adalah seperti hubungan antara acuan dan tuangan Hasil daripada kekuatan kelas ialah objek, dan abstraksi objek ialah kelas, dan penerangan kelas Sekumpulan objek dengan ciri (sifat) yang sama dan tingkah laku yang sama.
Sifat ahli dan kaedah ahli kelas php
Kaedah yang ditakrifkan oleh kelas
<?php class phpClass { var $var1; var $var2 = "constant string"; function myfunc ($arg1, $arg2) { [..] } [..] } ?>rrree
Nota: Mesti ada pengubah suai di hadapan atribut ahli kelas Jika anda tidak tahu cara menggunakan pengubah suai perisytiharan, anda boleh menggunakan var (kata kunci). adalah pengubah suai lain, jangan gunakan var
Nota: Sifat ahli tidak boleh menjadi ungkapan dengan operator, pembolehubah, kaedah atau panggilan fungsi. Kaedah ahli yang diisytiharkan mesti berkaitan dengan objek dan tidak boleh menjadi beberapa operasi yang tidak bermakna.
Objek terpantas
Format instantiasi kelas adalah seperti berikut :
$Nama objek = nama kelas baharu ([parameter]); // Instantiasi kelas: pernyataan bahawa kelas itu menjadi objek
· $Nama objek: Nama objek yang dikembalikan oleh instantiasi kelas, digunakan untuk merujuk kepada kaedah dalam kelas.
· baharu: Kata kunci, menunjukkan bahawa objek baharu akan dibuat.
· Nama kelas: Menunjukkan nama kelas.
· Parameter: Pembina kelas yang ditentukan digunakan untuk memulakan nilai kelas. Jika tiada pembina ditakrifkan dalam kelas, PHP secara automatik akan mencipta pembina lalai tanpa parameter.
Kod sumber yang disediakan dalam new.php boleh melihat dengan jelas cara membuat instantiat dan mengakses objek.
<?php class boy{ var $name ="jw"; var $age = "21"; var $sex = "男"; var $height = "182CM"; var $eye = "big"; //函数(成员方法) function zuofan(){ return "做饭<br>"; } function jiawu(){ return "家务<br>"; } }; ?>
-> simbol mewakili kelas di bawah nama objek akses.
Rujukan objek khas "ini".
Selagi ia menjadi ahli objek, anda mesti menggunakan objek ini untuk mengakses dalaman dan kaedah objek ini.
<?php class boy{ //变量(成员属性) var $name ="jw"; var $age = "21"; var $sex = "男"; var $height = "182CM"; var $eye = "big"; //函数(成员方法) function zuofan(){ return "做饭<br>"; } function jiawu(){ return "家务<br>"; } } $boy1 = new boy(); $boy1->name = "张三"; $boy2 = new boy(); $boy2 ->name = "李四"; echo $boy1 -> sex."<br>"; echo $boy2 -> height."<br>"; ?>
Kaedah pembina
Pembina ialah kaedah khas. Ia digunakan terutamanya untuk memulakan objek apabila mencipta objek, iaitu, untuk menetapkan nilai awal kepada pembolehubah ahli objek Ia sentiasa digunakan bersama-sama dengan operator baru dalam pernyataan untuk mencipta objek.
1. Ia adalah kaedah pertama yang dipanggil secara automatik selepas objek dicipta (istimewa)
2. Nama kaedah adalah istimewa dan boleh sama dengan nama kelas
3. Digunakan untuk memberikan nilai awal kepada ahli dalam objek.
<?php class boy{ //变量(成员属性) var $name ="jw"; var $age = "21"; var $sex = "男"; //函数(成员方法) public function zuofan(){ echo "{$this->name} 做饭<br>"; $this->jiawu(); } function jiawu(){ echo "家务<br>"; } } $boy1 = new boy(); $boy2 = new boy; $boy2 ->name = "李四"; $boy1->name = "张三"; $boy1->zuofan(); $boy2->zuofan(); ?>
Kaedah pemusnahan
Pemusnah dan pembina Sebaliknya, apabila objek menamatkan kitaran hayatnya (contohnya, fungsi di mana objek terletak telah dipanggil), sistem secara automatik melaksanakan pemusnah.
PHP 5 memperkenalkan konsep destructor, yang serupa dengan bahasa berorientasikan objek lain format sintaksnya adalah seperti berikut:
void __destruct ( void )
Warisi
PHP menggunakan kata kunci lanjutan untuk mewarisi kelas PHP tidak menyokong pewarisan berbilang Formatnya adalah seperti berikut: <?php.
Kanak-kanak kelas melanjutkan Ibu Bapa { // Bahagian kod
}
Kawalan akses
PHP untuk atribut atau Kawalan capaian kaedah dicapai dengan menambahkan kata kunci awam, dilindungi atau peribadi di hadapan. · Awam: Ahli kelas awam boleh diakses dari mana-mana sahaja. · Dilindungi: Ahli kelas yang dilindungi boleh diakses dengan sendirinya, subkelas dan kelas induknya. · Persendirian (peribadi): Ahli kelas persendirian hanya boleh diakses oleh kelas di mana mereka ditakrifkan. Anda boleh melihat public.php protected.php private.php untuk melihat perbezaannyaPenulisan semula kaedah
Kaedah terlebih muatan ( override)/override - dalam keadaan apa ia digunakan: Apabila kelas induk mengetahui bahawa semua subkelas perlu menggunakan kaedah, tetapi kelas induk tidak tahu cara menulis kaedah ini, kaedah terlebih muatan perlu digunakan. Pada masa ini, anda boleh membiarkan subkelas mengatasi kaedah ini. Contoh popular - kelas induk (haiwan) tahu bahawa subkelasnya (kucing dan anjing) boleh menyalak, tetapi nama mereka berbeza, jadi kelas induk tidak boleh menulis kaedah ini dan hanya boleh membenarkan kanak-kanak kelas (kucing dan anjing) untuk menentukan. Kodnya adalah seperti berikut:<?php class boy{ //变量(成员属性) var $name; var $age; var $sex; function __construct($name,$age,$sex="男"){ $this->name="$name"; $this->age="$age"; $this->sex="$sex"; } //函数(成员方法) public function zuofan(){ echo "{$this->name} 做饭<br>"; $this->jiawu(); } function jiawu(){ echo "家务<br>"; } } $boy1 = new boy("名字",28); $boy2 = new boy("名",26,"男"); $boy1->zuofan(); $boy2->zuofan(); ?>
Antaramuka
Antara muka ialah satu ketetapan, sesuatu yang boleh diwarisi oleh orang Ia sedikit seperti kaedah yang ditakrifkan dalam kelas abstrak
, tetapi mereka tidak dijadikan instantiated, kelas lain perlu melaksanakannya, dan antara muka mesti dilaksanakan satu demi satu. Semua kaedah ditakrifkan, contohnya
antara muka Kedai
{
beli fungsi awam($gid
jual fungsi awam($gid
paparan fungsi awam); );
}
Saya mengisytiharkan kelas antara muka kedai dan mentakrifkan tiga kaedah: beli, jual dan lihat Kemudian semua subkelas yang mewarisi kelas ini mesti melaksanakan ketiga-tiga kaedah ini tidak melaksanakan ini, ia tidak akan berfungsi. Sebenarnya, kelas antara muka adalah, secara terang-terangan, templat kelas dan peraturan kelas Jika anda tergolong dalam kategori ini, anda mesti mengikut peraturan saya Tidak kira bagaimana anda melakukannya, saya tidak peduli bagaimana anda melakukannya. Itu terpulang kepada anda Perkara seperti:
<?php class Animal{ public $name; protected $price; function cry(){ echo "不知道动物怎么叫"; } } class Dog extends Animal{ function cry(){ echo "汪汪..."; } } class Pig extends Animal{ function cry(){ echo "哼哼..." } } ?>
Malar
Anda boleh menentukan nilai yang sentiasa kekal tidak berubah dalam kelas sebagai tetap. Tidak perlu menggunakan simbol $ apabila mentakrifkan dan menggunakan pemalar.
Nilai pemalar mestilah nilai tetap dan tidak boleh pembolehubah, atribut kelas, hasil operasi matematik atau panggilan fungsi.
<?php class BaseShop implements Shop { public function buy($gid) { echo('你购买了ID为 :'.$gid.'的商品'); } public function sell($gid) echo('你卖了ID为 :'.$gid.'的商品'); } public function view($gid) { echo('你查看了ID为 :'.$gid.'的商品'); } } ?>
Maksud:: dalam php
Kaedah rujukan kaedah statik dan sifat statik dalam kelas
Contohnya,
<?php class MyClass { const constant = '常量值'; function showConstant() { echo self::constant . PHP_EOL; } } echo MyClass::constant . PHP_EOL; $classname = "MyClass"; echo $classname::constant . PHP_EOL; // 自 5.3.0 起 $class = new MyClass(); $class->showConstant(); echo $class::constant . PHP_EOL; // 自 PHP 5.3.0 起 ?>
boleh menggunakan Ujian:: secara langsung tanpa instantiating objek. $test untuk mendapatkan nilai atribut $test
Begitu juga dengan panggilan kaedah statik Test::test(); class
Bagi pengaturcara PHP, perkara yang paling sukar untuk dikuasai ialah aplikasi kelas abstrak PHP. Sebagai orang baru, saya belum bersedia untuk menggunakan pengetahuan berorientasikan objek untuk memprogram, tetapi dalam pembangunan masa depan, tidak dapat dielakkan untuk menggunakan kelas untuk merangkum atau menggunakan antara muka untuk membangunkan program dalam pelbagai format modular.
Dalam bahasa semula jadi, kita memahami konsep abstrak sebagai perihalan besar objek, yang merupakan ciri umum untuk jenis objek tertentu. Perkara yang sama berlaku dalam PHP Apabila kita mengabstrakkan kelas, kita boleh menunjukkan kelakuan umum kelas ini harus menjadi templat, yang menunjukkan beberapa kelakuan yang mesti dilaksanakan oleh sub-kaedahnya.
Definisi aplikasi kelas abstrak PHP:
Nama Kelas kelas abstrak{
}
Perkara utama aplikasi kelas abstrak PHP:
1. Tentukan beberapa kaedah, dan subkelas mesti melaksanakan sepenuhnya semua kaedah dalam abstraksi ini
2. Objek tidak boleh dicipta daripada kelas abstrak, maksudnya perlu dilanjutkan
3. Kelas abstrak biasanya mempunyai kaedah abstrak , tiada kurungan kerinting dalam kaedah
Perkara utama dalam aplikasi kelas abstrak PHP:
1. Kaedah abstrak tidak perlu melaksanakan fungsi tertentu, dan dilengkapkan oleh subkelas
2. Dalam subkelas Apabila melaksanakan kaedah kelas abstrak, keterlihatan subkelasnya mestilah lebih besar daripada atau sama dengan takrifan kaedah abstrak
3. Kaedah kelas abstrak boleh mempunyai parameter atau kosong
4. Jika Jika kaedah abstrak mempunyai parameter, maka pelaksanaan subkelas juga mesti mempunyai bilangan parameter yang sama
contoh aplikasi kelas abstrak PHP:
abstract public function_name(); //Perhatikan bahawa tiada kurungan kerinting
Peraturan kelas abstrak PHP:
1 Selagi kelas mengandungi sekurang-kurangnya satu kaedah abstrak, ia mesti diisytiharkan sebagai kelas abstrak
2. Kaedah abstrak, tidak Boleh mengandungi badan fungsi
3 Mewarisi subkelas kelas abstrak dan melaksanakan kaedah abstrak mesti mempunyai tahap akses yang sama atau lebih rendah seperti kaedah abstrak
4 subkelas bagi Kelas kelas abstrak, jika semua kaedah abstrak tidak dilaksanakan, maka subkelas itu juga merupakan kelas abstrak
Mari kita laksanakan kelas abstrak mudah: hitung luas segi empat tepat. Segi empat tepat ini boleh dipanjangkan daripada kelas bentuk.
Anda boleh melihat kod abstract.php
Kata kunci akhir
Jika kami tidak mahu kelas diwarisi, kami menggunakan final untuk ubah suai kelas ini. Kelas ini tidak akan diwarisi.
akhir---digunakan sebelum kelas dan kaedah.
Kelas akhir---tidak boleh diwarisi.
Kaedah akhir---tidak boleh ditindih.
Kelas akhir tidak boleh diwarisi.
Apabila kita hanya mahu kelas tidak boleh dilanjutkan, kita boleh menambah Final di hadapan kelas supaya kelas tidak boleh diwarisi.
Kata kunci statik
Satu lagi ciri penting skop pembolehubah dalam php ialah pembolehubah statik. Pembolehubah statik hanya wujud dalam skop fungsi setempat dan hanya dimulakan sekali Apabila pelaksanaan program meninggalkan skop ini, nilainya tidak akan hilang, dan hasil pelaksanaan terakhir akan digunakan.
PHP_EOL
Pemutus talian
Panggil kaedah pembina kelas induk
induk::__construct().
PHP tidak akan memanggil pembina kelas induk secara automatik dalam pembina subkelas. Untuk melaksanakan pembina kelas induk, anda perlu memanggil