PHP類相關(guān)知識(shí)點(diǎn)實(shí)例總結(jié)
本文實(shí)例總結(jié)了PHP類相關(guān)知識(shí)點(diǎn)。分享給大家供大家參考,具體如下:
最終類與最終方法
如果父類中的方法被聲明為 final,則子類無(wú)法覆蓋該方法。如果一個(gè)類被聲明為 final,則不能被繼承。
final class a{}
class a{
final public function A(){}
}
抽象類與抽象方法
abstract class a {
public abstract function func();
}
class A extends a{
public function func(){}
}
① 一個(gè)類可以使用abstract聲明為抽象類;抽象類是不能實(shí)例化的類,只用作其他類的父類。
abstract class name{}
② 一個(gè)方法可以使用abstract聲明為抽象方法;抽象方法只需要聲明方法頭,不需要大括號(hào)部分的方法體。
abstract public function name($val);
③ 一個(gè)類中有抽象方法,則該類必須聲明為抽象類。
④ 子類繼承自一個(gè)抽象類,則子類不行實(shí)現(xiàn)父類中的所有抽象方法,除非子類也繼續(xù)作為抽象類。
⑤ 子類實(shí)現(xiàn)抽象父類的方法時(shí),訪問控制符范圍不能降低,且方法的參數(shù)也必須一致(重寫)。
接口
接口可以看作是抽象類的更高層面的抽象,可以說(shuō)是抽象類的特例
interface a{
function func();
}
class A implements a {
function func(){}
}
類:屬性、類常量、方法
抽象類:屬性、類常量、抽象方法
接口:接口常量、抽象方法
① 相比抽象類,接口可實(shí)現(xiàn)‘多繼承'
class A implements a,b,c{}
② 一個(gè)接口只能繼承一個(gè)接口
interface a extends b{}
③ 其中方法都是抽象方法不用abstract修飾,即下級(jí)類要么實(shí)現(xiàn)接口的方法(implements),要么也聲明為抽象方法
重載技術(shù)
1. 屬性重載:如果使用一個(gè)不存在的屬性,就會(huì)調(diào)用類中預(yù)先定義好的某個(gè)方法以處理數(shù)據(jù);
對(duì)于屬性不用的應(yīng)用場(chǎng)景,做如下處理
① 取值:自動(dòng)調(diào)用類中的__get()
② 賦值:自動(dòng)調(diào)用類中的__set()
③ 判斷是否存在:自動(dòng)調(diào)用類中的__isset()
④ 銷毀:自動(dòng)調(diào)用類中的__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)用類中預(yù)先定義好的某個(gè)方法以處理該行為;
對(duì)于方法不用的應(yīng)用場(chǎng)景,做如下處理
① 在對(duì)象中調(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;
}*/
運(yùn)行結(jié)果如下:
function func not exist function staFunc not exist
注意:以上方法都屬于魔術(shù)方法,都帶有參數(shù)
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP基本語(yǔ)法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- cakephp常見知識(shí)點(diǎn)匯總
- PHP編程入門的基本語(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入門學(xué)習(xí)知識(shí)點(diǎn)八 PHP中for循環(huán)基本應(yīng)用之九九乘法口絕表
- php入門學(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-03
php echo()和print()、require()和include()函數(shù)區(qū)別說(shuō)明
簡(jiǎn)單總結(jié)echo()和print()、require()和include()等易混淆函數(shù)的區(qū)別2010-03-03
PHP實(shí)現(xiàn)清除wordpress里惡意代碼
這篇文章主要介紹了PHP實(shí)現(xiàn)清除wordpress里惡意代碼的方法以及相關(guān)代碼和使用方法,有需要的小伙伴可以參考下。2015-10-10
apache+codeigniter 通過.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 輸出他們的全部組合)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-03-03

