Pengenalan berorientasikan objek PHP untuk pemula

Apakah itu berorientasikan objek

Objek ialah keseluruhan yang terdiri daripada maklumat dan penerangan tentang cara memproses maklumat Ia adalah abstraksi dunia sebenar

Pengaturcaraan berorientasikan objek , dirujuk sebagai OOP

Dalam masyarakat sebenar, perkara yang kita hadapi adalah objek, seperti komputer, cawan, rumah, dll.

3 ciri utama objek

1 Gelagat objek: Apakah operasi yang boleh digunakan pada objek, menghidupkan lampu dan mematikan lampu adalah tingkah laku.

2. Bentuk objek: Bagaimana objek bertindak balas, warna, saiz dan rupa apabila kaedah tersebut digunakan.

3. Perwakilan objek: Perwakilan objek adalah bersamaan dengan kad ID, khususnya membezakan perbezaan dalam kelakuan dan status yang sama

Kandungan berorientasikan objek

1.Kelas: Mentakrifkan ciri abstrak sesuatu perkara. Takrif kelas termasuk bentuk data dan operasi pada data

2 Objek : ialah contoh kelas

3 pembolehubah : Pembolehubah ditakrifkan di dalam kelas. Nilai pembolehubah ini tidak dapat dilihat oleh dunia luar, tetapi boleh diakses melalui fungsi ahli Selepas kelas dijadikan sebagai objek, pembolehubah boleh dipanggil atribut objek

4.

Fungsi Ahli: Ditakrifkan di dalam kelas dan boleh digunakan untuk mengakses data objek

5

Warisan: Warisan ialah mekanisme untuk subkelas berkongsi struktur data dan secara automatik. kaedah kelas induk Ini adalah hubungan antara. Apabila mentakrifkan dan melaksanakan kelas, anda boleh melakukannya berdasarkan kelas sedia ada, gunakan kandungan yang ditakrifkan oleh kelas sedia ada sebagai kandungan anda sendiri dan tambah beberapa kandungan baharu

6 .

Kelas induk: Kelas diwarisi oleh kelas lain ini boleh dipanggil kelas induk, atau kelas asas, atau kelas super

7.

Subkelas: Kelas yang mewarisi kelas lain dipanggil subkelas, yang juga boleh dipanggil kelas terbitan

8.

Polymorphism: Polimorfisme merujuk kepada operasi atau fungsi yang sama, Prosedur boleh beroperasi pada banyak jenis objek dan mencapai hasil yang berbeza. Objek yang berbeza boleh menghasilkan hasil yang berbeza selepas menerima mesej yang sama Fenomena ini dipanggil polimorfisme

9.

Lebih muatan: Ringkasnya, ia bermakna fungsi atau kaedah mempunyai nama yang sama, tetapi parameternya. senarai adalah berbeza, fungsi atau kaedah sedemikian dengan nama yang sama dan parameter berbeza dipanggil fungsi atau kaedah terlampau beban

10.

Keabstrakan: Abstraksi ialah Ia merujuk kepada mengabstraksi objek dengan struktur data yang konsisten (sifat ) dan tingkah laku (operasi) ke dalam kelas. Kelas ialah abstraksi yang mencerminkan sifat penting yang berkaitan dengan aplikasi sambil mengabaikan kandungan lain yang tidak berkaitan. Pembahagian mana-mana kelas adalah subjektif, tetapi mesti berkaitan dengan aplikasi khusus

11.

Encapsulation: Enkapsulasi merujuk kepada mengikat sifat dan tingkah laku objek yang wujud dalam dunia nyata bersama-sama dan diletakkan dalam unit logik

12.

Pembina digunakan terutamanya untuk memulakan objek apabila mencipta objek, iaitu, memberikan nilai awal kepada pembolehubah ahli objek, sentiasa dengan operasi baharu yang digunakan bersama dengan dalam pernyataan yang mencipta objek

13.Pemusnah : Pemusnah (pemusnah) Bertentangan dengan pembina, apabila objek menamatkan kitaran hayatnya (contohnya, fungsi di mana objek terletak telah dipanggil), sistem secara automatik melaksanakan pemusnah. Pemusnah selalunya digunakan untuk melakukan kerja "pembersihan" (contohnya, semasa mencipta objek, gunakan baharu untuk membuka ruang memori, yang harus dilepaskan dengan pemadaman dalam pemusnah sebelum keluar)

Definisi kelas:

1. Kelas ditakrifkan menggunakan kata kunci kelas diikuti dengan nama kelas.

2. Pembolehubah dan kaedah boleh ditakrifkan dalam sepasang kurungan kerinting ({}) selepas nama kelas.

3. Pembolehubah kelas diisytiharkan menggunakan var, dan pembolehubah juga boleh dimulakan.

4. Definisi fungsi adalah serupa dengan takrifan fungsi PHP, tetapi fungsi itu hanya boleh diakses melalui kelas dan objek instantiatednya

<?php
class Site {
    /* 成员变量 */
    var $url;
    var $title;
  
    /* 成员函数 */
    function setUrl($par){
       $this->url = $par;
    }  
    function getUrl(){
       echo $this->url;
    } 
    function setTitle($par){
       $this->title = $par;
    } 
    function getTitle(){
       echo $this->title;
    }
}
//注:变量 $this 代表自身的对象。
?>

Objek yang dicipta dalam php

Selepas kelas dibuat, kita boleh menggunakan operator baharu untuk membuat instantiate objek kelas ini

$php = New Site;

$taobao = new Site;

$google = new Site;

Kami mencipta tiga objek dalam kod di atas, setiap satu daripada tiga objek adalah bebas

<?php 
header("Content-type: text/html; charset=utf-8");//设置编码 
class Site { 
  /* 成员变量 */ 
    var $url; 
    var $title;      
    /* 成员函数 */ 
    function setUrl($par){ 
       $this->url = $par; 
    }      
    function getUrl(){ 
       echo $this->url . "</br>"; 
    }  
    function setTitle($par){ 
       $this->title = $par; 
    } 
    function getTitle(){ 
       echo $this->title . "</br>"; 
    } 
} 
    $php = new Site; 
    $taobao = new Site; 
    $google = new Site; 


    // 调用成员函数,设置标题和URL 
    $php->setTitle( "php中文网" ); 
    $taobao->setTitle( "淘宝" ); 
    $google->setTitle( "Google 搜索" ); 

    $php->setUrl( 'www.php.cn' ); 
    $taobao->setUrl( 'www.taobao.com' ); 
    $google->setUrl( 'www.google.com' ); 

    // 调用成员函数,获取标题和URL 
    $php->getTitle(); 
    $taobao->getTitle(); 
    $google->getTitle(); 

    $php->getUrl(); 
    $taobao->getUrl(); 
    $google->getUrl(); 
?>

Pembina

Pembina ialah kaedah khas. Ia digunakan terutamanya untuk memulakan objek semasa mencipta objek, iaitu, memberikan nilai awal kepada pembolehubah ahli objek Ia sentiasa digunakan bersama-sama dengan operator baharu dalam pernyataan yang mencipta objek PHP 5 membenarkan pembangun Tentukan kaedah sebagai pembina dalam kelas Format sintaks adalah seperti berikut:

void __construct ([ mixed $args [, $... ]] )<. 🎜>

Pembina Analisis

Pemusnah (pemusnah) Bertentangan dengan pembina, apabila objek menamatkan kitaran hayatnya (contohnya, fungsi di mana objek terletak telah dipanggil), sistem secara automatik melaksanakan pemusnah

PHP 5 memperkenalkan konsep pemusnah, yang serupa dengan bahasa berorientasikan objek lain Format sintaksnya adalah seperti berikut:

void __destruct ( void )

<?php
	header("Content-type: text/html; charset=utf-8");//设置编码 
	class MyDestructableClass {
	   function __construct() {
	       print "构造函数</br>";
	       $this->name = "MyDestructableClass";
	   }

	   function __destruct() {
	       print "销毁 " . $this->name;
	   }
	}

	$obj = new MyDestructableClass();
?>

Warisan

PHP menggunakan kata kunci lanjutan untuk mewarisi kelas PHP tidak menyokong pewarisan formatnya adalah seperti berikut:

kelas Anak melanjutkan Ibu Bapa {

                                                                                                                    

Juga dipanggil

mengatasi

kaedah.

Kaedah getUrl dan getTitle ditulis semula dalam contoh:

<?php 
// 子类扩展站点类别
class Child_Site extends Site {
   	var $category;

	function setCate($par){
		$this->category = $par;
	}
  
	function getCate(){
		echo $this->category;
	}
}
?>

Kawalan Akses

awam (Awam): Ahli kelas awam boleh diakses dari mana-mana sahaja.

dilindungi

(dilindungi): Ahli kelas yang dilindungi boleh diakses dengan sendirinya dan subkelas dan kelas induknya.

peribadi (peribadi): Ahli kelas persendirian hanya boleh diakses oleh kelas di mana mereka ditakrifkan.

Kawalan akses atribut

Atribut kelas mesti ditakrifkan sebagai salah satu atribut awam, dilindungi dan peribadi. Jika ditakrifkan dengan var, ia dianggap awam

<?php
    function getUrl() {
       echo $this->url . PHP_EOL;
       return $this->url;
    }
       
    function getTitle(){
       echo $this->title . PHP_EOL;
       return $this->title;
    }
?>

Kawalan akses kaedah

Kaedah dalam kelas boleh ditakrifkan sebagai awam atau peribadi atau dilindungi. Jika kata kunci ini tidak ditetapkan, kaedah lalai kepada awam

<?php
/**
 * Define MyClass
 */
class MyClass
{
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';
    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}
$obj = new MyClass();
echo $obj->public; // 这行能被正常执行
//echo $obj->protected; // 这行会产生一个致命错误
//echo $obj->private; // 这行也会产生一个致命错误
$obj->printHello(); // 输出 Public、Protected 和 Private
/**
 * Define MyClass2
 */
class MyClass2 extends MyClass
{
    // 可以对 public 和 protected 进行重定义,但 private 而不能
    protected $protected = 'Protected2';

    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        //echo $this->private;
    }
}
$obj2 = new MyClass2();
echo $obj2->public; // 这行能被正常执行
//echo $obj2->private; // 未定义 private
//echo $obj2->protected; // 这行会产生一个致命错误
$obj2->printHello(); // 输出 Public、Protected2 和 Undefined

?>

Malar

boleh diletakkan di dalam kelas Nilai yang sentiasa kekal sama ditakrifkan sebagai pemalar. 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.

Sejak PHP 5.3.0, anda boleh menggunakan pembolehubah untuk memanggil kelas secara dinamik. Tetapi nilai pembolehubah ini tidak boleh menjadi kata kunci (seperti diri, ibu bapa atau statik)

Kelas abstrak

Mana-mana kelas jika ia dalam Jika sekurang-kurangnya satu kaedah diisytiharkan abstrak, maka kelas mesti diisytiharkan abstrak.

Kelas yang ditakrifkan sebagai abstrak tidak boleh dibuat seketika.

Kaedah yang ditakrifkan sebagai abstrak hanya mengisytiharkan kaedah panggilannya (parameter) dan tidak boleh menentukan pelaksanaan fungsi khususnya.

Apabila mewarisi kelas abstrak, subkelas mesti mentakrifkan semua kaedah abstrak dalam kelas induk selain itu, kawalan akses kaedah ini mestilah sama (atau lebih santai) seperti dalam kelas induk. Sebagai contoh, jika kaedah abstrak diisytiharkan sebagai dilindungi, maka kaedah yang dilaksanakan dalam subkelas hendaklah diisytiharkan sebagai dilindungi atau awam, dan tidak boleh ditakrifkan sebagai peribadi. Di samping itu, kaedah panggilan kaedah mesti sepadan, iaitu jenis dan bilangan parameter yang diperlukan mestilah konsisten. Sebagai contoh, jika subkelas mentakrifkan parameter pilihan, tetapi ia tidak termasuk dalam pengisytiharan kaedah abstrak kelas induk, tiada konflik antara dua pengisytiharan

Antaramuka

Menggunakan antara muka, anda boleh menentukan kaedah yang mesti dilaksanakan oleh kelas, tetapi anda tidak perlu menentukan kandungan khusus kaedah ini.

Antara muka ditakrifkan melalui kata kunci antara muka, sama seperti mentakrifkan kelas standard, tetapi semua kaedah yang ditakrifkan di dalamnya adalah kosong.

Semua kaedah yang ditakrifkan dalam antara muka mestilah awam. Ini adalah ciri antara muka.

Untuk melaksanakan antara muka, gunakan operator implements. Kelas mesti melaksanakan semua kaedah yang ditakrifkan dalam antara muka, jika tidak ralat maut akan dilaporkan. Kelas boleh melaksanakan berbilang antara muka Gunakan koma untuk memisahkan nama berbilang antara muka.


Meneruskan pembelajaran
||
<?php class Site { /* 成员变量 */ var $url; var $title; /* 成员函数 */ function setUrl($par){ $this->url = $par; } function getUrl(){ echo $this->url; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title; } } //注:变量 $this 代表自身的对象。 ?>
  • Cadangan kursus
  • Muat turun perisian kursus