PHP類(lèi)相關(guān)知識(shí)點(diǎn)實(shí)例總結(jié)
本文實(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ì)有所幫助。
- cakephp常見(jiàn)知識(shí)點(diǎn)匯總
- PHP編程入門(mén)的基本語(yǔ)法知識(shí)點(diǎn)總結(jié)
- PHP高手需要要掌握的知識(shí)點(diǎn)
- PHP容易忘記的知識(shí)點(diǎn)分享
- PHP中最容易忘記的一些知識(shí)點(diǎn)總結(jié)
- php中關(guān)于mysqli和mysql區(qū)別的一些知識(shí)點(diǎn)分析
- php入門(mén)學(xué)習(xí)知識(shí)點(diǎn)八 PHP中for循環(huán)基本應(yīng)用之九九乘法口絕表
- php入門(mén)學(xué)習(xí)知識(shí)點(diǎn)一 PHP與MYSql連接與查詢
- PHP那些瑣碎的知識(shí)點(diǎn)(整理)
相關(guān)文章
PHP實(shí)現(xiàn)的數(shù)據(jù)對(duì)象映射模式詳解
這篇文章主要介紹了PHP實(shí)現(xiàn)的數(shù)據(jù)對(duì)象映射模式,結(jié)合實(shí)例形式分析了php數(shù)據(jù)對(duì)象映射模式的原理、實(shí)現(xiàn)步驟及相關(guān)操作技巧,需要的朋友可以參考下2019-03-03php echo()和print()、require()和include()函數(shù)區(qū)別說(shuō)明
簡(jiǎn)單總結(jié)echo()和print()、require()和include()等易混淆函數(shù)的區(qū)別2010-03-03PHP實(shí)現(xiàn)清除wordpress里惡意代碼
這篇文章主要介紹了PHP實(shí)現(xiàn)清除wordpress里惡意代碼的方法以及相關(guān)代碼和使用方法,有需要的小伙伴可以參考下。2015-10-10apache+codeigniter 通過(guò).htcaccess做動(dòng)態(tài)二級(jí)域名解析
今天將服務(wù)器php版本升到了5.4.4,然后將之前的一個(gè)項(xiàng)目改用apache,動(dòng)態(tài)二級(jí)轉(zhuǎn)向用.htcaccess實(shí)現(xiàn)了動(dòng)態(tài)二級(jí)域名解析,共享一下2012-07-07淺談PHP的排列組合(如輸入a,b,c 輸出他們的全部組合)
下面小編就為大家?guī)?lái)一篇淺談PHP的排列組合(如輸入a,b,c 輸出他們的全部組合)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03