欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP類相關知識點實例總結

 更新時間:2016年09月28日 15:15:49   作者:ligbee  
這篇文章主要介紹了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);

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

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

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

接口

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

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

類:屬性、類常量、方法

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

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

① 相比抽象類,接口可實現(xiàn)‘多繼承'

class A implements a,b,c{}

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

interface a extends b{}

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

重載技術

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

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

① 取值:自動調(diào)用類中的__get()
② 賦值:自動調(diào)用類中的__set()
③ 判斷是否存在:自動調(diào)用類中的__isset()
④ 銷毀:自動調(diào)用類中的__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. 方法重載:如果使用一個不存在的方法,就會調(diào)用類中預先定義好的某個方法以處理該行為;

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

① 在對象中調(diào)用不可訪問的方法:__call()
② 靜態(tài)方式中調(diào)用不可訪問方法:__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

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

更多關于PHP相關內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O計入門教程》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《PHP網(wǎng)絡編程技巧總結》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

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

相關文章

最新評論