程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP類相關知識點實例總結

PHP類相關知識點實例總結

編輯:PHP綜合

本文實例總結了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()

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

<?php
class 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 exists
1
boolean true

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

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

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

<?php
class 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 exist
function staFunc not exist

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

更多關於PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《PHP網絡編程技巧總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved