日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP 入门 - 6.面对对象

發布時間:2024/1/17 php 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP 入门 - 6.面对对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 聲明一個類
      • 聲明屬性
      • 聲明類常量
    • 繼承
    • trait
    • 構造函數
    • 析構函數
    • 自省
    • 序列化

聲明一個類

語法如下:

class classname[ extends baseclass [ implements interfacename, [ interfacename, ...] ] ] {[ use traitname, [traitname, ...]];[ visiblity $property[ = value]; ...][ function functionname (args) ]{//code} }

PHP 中的面對對象和 Java 中的面對對象用法基本相似。只是用法更隨意。

比如:它可以用一個變量來提供類名:

$class = "Person"; $object = new $class; // 等同于 $object = new Person;

靜態方法通過類來調用,而不是通過對象調用。靜態方法由類名加兩個冒號(::)和函數名構成。另:在靜態方法內部,$this 會失效。

HTML::p("Hello, world");

對象一旦被創建,就會通過引用傳遞。要像得到一個對象的副本,可以使用 clone 操作符。

$f = new Person("Fred", 35); $b = clone $f;

用 final 關鍵字來聲明一個類/方法,子類將無法重寫這個類/方法。

在一個對象類的實例中,可以用 self 關鍵字來調用屬性或方法。

聲明屬性

在 PHP 中,你可以任何位置增加新的屬性。

class Person {function getName(){return $this->name;}function setName($newName){$this->name = $newName;} } $person = new Person; $person->setName("plane"); echo $person->getName(); // plane

聲明類常量

使用 const 關鍵詞來聲明常量。一旦定義了一個類常量,他的值就不能在改變。

繼承

如果一個子類與它的父類具有相同名稱的屬性或方法,則子類中的屬性和方法比父類中的優先級高。引用類的屬性會返回之類中的屬性值,引用類方法時也會調用子類中的方法。

parent::birthday(); // 調用父類中的 birthday 方法 self::birthday(); // 調用當前類中的 birthday 方法

trait

PHP 5.4 新增特性,它允許在不創建一個父類的情況下,便可以在不同層次結構的類中復用類外部的代碼,共享不同類的函數方法。語法如下:

trait traitname [ extends baseclass ] {[ use traitname, [ traitname, ... ]];[ abstract function functionname(); [...] ][ visibility $property [ = value ]; ... ][ function functionname (args){//code} ] }

如果引入多個 trait 出現重名的情況,可以在類中定義一個別名。

trait Command {function run(){echo "Executing a command";} }trait Marathon {function run(){echo "Running a marathon";} }class Person {use Command, Marathon {Command::run as runCommand;Marathon::run insteadof Command;} }$person = new Person; $person->run(); // "Running a marathon" $person->runCommand(); // "Executing a command"

構造函數

在創建一個對象是,會自動調用名為 __construct() 的函數。

PHP 并不支持構造函數鏈的自動調用,也就是說,當實例化子類時,只有子類自己構造函數會被調用,父類的構造函數不會被調用。我們可以顯式地調用父類的構造函數:parent::__construct()。

析構函數

當一個對象被銷毀時,就會自動調用名為 __destruct() 的函數。

自省

自審是一種讓程序檢查對象特性的機制,可以檢查對象的名稱、父類、屬性和方法等。

class_exists() : 確定一個類是否存在。

method_exists() : 確定函數是否存在。

get_declared_classes() : 返回一個包含所有已定義的類的數組。

get_class_methods() : 得到一個類中只有默認值的屬性。

get_class_vars() : 得到一個類中所有方法。

get_object_vars() : 返回對象中只有默認值的屬性。

get_parent_class() : 得到一個類的父類名稱。

display_classes() : 顯示所有當前已聲明的類,以及他們的方法和屬性。

is_object() : 確定是否為一個對象。

序列化

序列化一個對象是指將一個對象轉換成字節流的形式,這樣就可以將對象保存在文件中。這對數據的持久化非常有用。PHP 中的序列化幾乎時全自動的,除了要調用 serialize() 和 unserialize() 函數外,你幾乎不需要做任何額外的工作。

在序列化和反序列化的過程中,PHP 有兩個用于對象的鉤子( hook ):

__sleep() : 一個對象被序列化之前被調用。

__wakeup() : 一個對象從字節流中被創建時調用。

感謝你看到了這里。如果文章有錯誤,請評論指正,謝謝!

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的PHP 入门 - 6.面对对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。