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

PHP類(lèi)相關(guān)知識(shí)點(diǎn)實(shí)例總結(jié)

 更新時(shí)間:2016年09月28日 15:15:49   作者:ligbee  
這篇文章主要介紹了PHP類(lèi)相關(guān)知識(shí)點(diǎn),結(jié)合實(shí)例形式總結(jié)分析了php類(lèi)相關(guān)的最終類(lèi)、最終方法、抽象類(lèi)、抽象方法、接口、重載、魔術(shù)方法等相關(guān)概念與操作技巧,需要的朋友可以參考下

本文實(shí)例總結(jié)了PHP類(lèi)相關(guān)知識(shí)點(diǎn)。分享給大家供大家參考,具體如下:

最終類(lèi)與最終方法

如果父類(lèi)中的方法被聲明為 final,則子類(lèi)無(wú)法覆蓋該方法。如果一個(gè)類(lèi)被聲明為 final,則不能被繼承。

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

抽象類(lèi)與抽象方法

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

① 一個(gè)類(lèi)可以使用abstract聲明為抽象類(lèi);抽象類(lèi)是不能實(shí)例化的類(lèi),只用作其他類(lèi)的父類(lèi)。

abstract class name{}

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

abstract public function name($val);

③ 一個(gè)類(lèi)中有抽象方法,則該類(lèi)必須聲明為抽象類(lèi)。

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

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

接口

接口可以看作是抽象類(lèi)的更高層面的抽象,可以說(shuō)是抽象類(lèi)的特例

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

類(lèi):屬性、類(lèi)常量、方法

抽象類(lèi):屬性、類(lèi)常量、抽象方法

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

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

class A implements a,b,c{}

② 一個(gè)接口只能繼承一個(gè)接口

interface a extends b{}

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

重載技術(shù)

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

對(duì)于屬性不用的應(yīng)用場(chǎng)景,做如下處理

① 取值:自動(dòng)調(diào)用類(lèi)中的__get()
② 賦值:自動(dòng)調(diào)用類(lèi)中的__set()
③ 判斷是否存在:自動(dòng)調(diào)用類(lèi)中的__isset()
④ 銷(xiāo)毀:自動(dòng)調(diào)用類(lèi)中的__unset()

前提是預(yù)先定義好這些方法,否則會(huì)報(bào)錯(cuò)

<?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));

運(yùn)行結(jié)果如下:

one not exists
1
boolean true

2. 方法重載:如果使用一個(gè)不存在的方法,就會(huì)調(diào)用類(lèi)中預(yù)先定義好的某個(gè)方法以處理該行為;

對(duì)于方法不用的應(yīng)用場(chǎng)景,做如下處理

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

運(yùn)行結(jié)果如下:

function func not exist
function staFunc not exist

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

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

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論