国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP類相關知識點實例總結

2024-05-04 23:50:13
字體:
來源:轉載
供稿:網友

本文實例總結了PHP類相關知識點。分享給大家供大家參考,具體如下:

最終類與最終方法

如果父類中的方法被聲明為 final,則子類無法覆蓋該方法。如果一個類被聲明為 final,則不能被繼承。

final class a{}class a{  final public function A(){}}

抽象類與抽象方法

abstract class a {  public abstract function func();}class A extends a{  public function func(){}}

① 一個類可以使用abstract聲明為抽象類;抽象類是不能實例化的類,只用作其他類的父類。

abstract class name{}

② 一個方法可以使用abstract聲明為抽象方法;抽象方法只需要聲明方法頭,不需要大括號部分的方法體。

abstract public function name($val);

③ 一個類中有抽象方法,則該類必須聲明為抽象類。

④ 子類繼承自一個抽象類,則子類不行實現父類中的所有抽象方法,除非子類也繼續作為抽象類。

⑤ 子類實現抽象父類的方法時,訪問控制符范圍不能降低,且方法的參數也必須一致(重寫)。

接口

接口可以看作是抽象類的更高層面的抽象,可以說是抽象類的特例

interface a{  function func();}class A implements a {  function func(){}}

類:屬性、類常量、方法

抽象類:屬性、類常量、抽象方法

接口:接口常量、抽象方法

① 相比抽象類,接口可實現‘多繼承'

class A implements a,b,c{}

② 一個接口只能繼承一個接口

interface a extends b{}

③ 其中方法都是抽象方法不用abstract修飾,即下級類要么實現接口的方法(implements),要么也聲明為抽象方法

重載技術

1. 屬性重載:如果使用一個不存在的屬性,就會調用類中預先定義好的某個方法以處理數據;

對于屬性不用的應用場景,做如下處理

① 取值:自動調用類中的__get()
② 賦值:自動調用類中的__set()
③ 判斷是否存在:自動調用類中的__isset()
④ 銷毀:自動調用類中的__unset()

前提是預先定義好這些方法,否則會報錯

<?phpclass bee{  public $ol = array();  public function __get($key){    if(isset($this->ol[$key])){      return $this->ol[$key];    }    return $key.' not exists';  }  public function __set($key,$val){    $this->ol[$key] = $val;  }  public function __isset($key){    if(isset($this->ol[$key])){      return true;    }    return false;  }  public function __unset($key){    unset($this->ol[$key]);  }}$obj = new bee();echo $obj->one;echo '<br>';$obj->one = 1;echo $obj->one;echo '<br>';var_dump(isset($obj->one));

運行結果如下:

one not exists1boolean true

2. 方法重載:如果使用一個不存在的方法,就會調用類中預先定義好的某個方法以處理該行為;

對于方法不用的應用場景,做如下處理

① 在對象中調用不可訪問的方法:__call()
② 靜態方式中調用不可訪問方法:__callStatic()

<?phpclass bee{  public function __call($name,$arr){    echo '<br>';    echo 'function '.$name.' not exist';  }  static function __callStatic($name,$arr){    echo '<br>';    echo 'function '.$name.' not exist';  }  /*public function __call($name,$arr){    $num = count($arr);    if($num<1){      $name();    }else{      $name = $name.'_one';      $name($arr[0]);    }  }*/}$obj->func();bee::staFunc();/*$obj->func(1);function func(){  echo '<br>';  echo 'no.0';}function func_one($val){  echo '<br>';  echo 'no.'.$val;}*/

運行結果如下:

function func not existfunction staFunc not exist

注意:以上方法都屬于魔術方法,都帶有參數

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 达日县| 隆昌县| 桃园县| 彭山县| 湘西| 拉萨市| 衡南县| 平武县| 曲松县| 普兰县| 尼木县| 新龙县| 揭西县| 郴州市| 佛山市| 腾冲县| 涟源市| 常山县| 图们市| 隆化县| 纳雍县| 乐清市| 安多县| 清苑县| 阳西县| 土默特左旗| 吴江市| 和田县| 霸州市| 鄂尔多斯市| 福建省| 二连浩特市| 密云县| 平泉县| 湾仔区| 封开县| 安新县| 宝清县| 虞城县| 纳雍县| 得荣县|