面向?qū)ο驩OP--PHP

作者:燁竹

對面向過程虫给,面向?qū)ο缶幊趟枷氲睦斫?/strong>
面向過程:

以過程為中心,將所要解決問題瞧筛,分解成一步一步的,再使用函數(shù)進(jìn)行封裝导盅,封裝之后再按過程上的步驟進(jìn)行依次調(diào)用
面向?qū)ο螅?br> 是功能進(jìn)行劃分较幌,將不同的功能劃分不同的主體上,再調(diào)用相應(yīng)主體上的動(dòng)作(功能)

類與對象

類:從眾多事物中提取共性(共同的特點(diǎn)),形成一個(gè)具有描述性的概念
對象:對象就是類中一個(gè)具體的事物
類語法:class 類名{
//類成員
}
實(shí)例化語法:new 類名【()】;
類可以理解為圖紙白翻,而實(shí)例化則是由類得到一個(gè)實(shí)際的物體的過程

類成員:

類成員是用于描述由類產(chǎn)生的身上所能調(diào)用的屬性與功能乍炉。
類成員以分為以下兩大類:普通類成員、靜態(tài)類成員
普通類成員:屬性滤馍、方法岛琼、常量
靜態(tài)類成員:靜態(tài)屬性、靜態(tài)方法
靜態(tài)方法和實(shí)例化方式的區(qū)分是為了解決模式的問題纪蜒,舉例子:比如說“人”這個(gè)類衷恭,每個(gè)人都有姓名、年齡纯续、性別随珠、身高等,這些屬性就應(yīng)該是非靜態(tài)的猬错,因?yàn)槊總€(gè)人都的這些屬性都不相同窗看;但人在生物學(xué)上屬于哪個(gè)門哪個(gè)綱哪個(gè)目等,這個(gè)屬性是屬于整個(gè)人類倦炒,所以就應(yīng)該是靜態(tài)的——它不依賴與某個(gè)特定的人显沈,不會(huì)有某個(gè)人是“脊椎動(dòng)物門哺乳動(dòng)物綱靈長目”而某個(gè)人卻是“偶蹄目”的
屬性(包括普通和靜態(tài)成員):訪問修飾控制限定符,包含三種:public是公開的逢唤;private私有的拉讯;protected受保護(hù)(可以繼承)
成員方法:【訪問修飾控制限定符】 function 方法名(){
//方法體
}
類常量:const
靜態(tài)方法:static


成員的訪問

public修飾的方法 類外類內(nèi)都可以調(diào)用
private、protected修飾的方法 只能在類內(nèi)使用$this調(diào)用,$this代表對象
常量的訪問:類名::常量名;在類內(nèi)訪問常量需要使用self關(guān)鍵字鳖藕;類內(nèi)的self就代表這個(gè)類魔慷;
訪問靜態(tài)屬性必須加$;不加則為訪問常量



(1)、靜態(tài)屬性不需要實(shí)例化即可調(diào)用著恩。因?yàn)殪o態(tài)屬性存放的位置是在類里院尔,調(diào)用方法為"類名::屬性名";
(2)喉誊、靜態(tài)方法不能調(diào)用非靜態(tài)屬性邀摆;因?yàn)榉庆o態(tài)屬性需要實(shí)例化后,存放在對象里伍茄;
(3)栋盹、靜態(tài)方法可以調(diào)用非靜態(tài)方法,使用 self 關(guān)鍵詞敷矫;php里贞盯,一個(gè)方法被self:: 后音念,它就自動(dòng)轉(zhuǎn)變?yōu)殪o態(tài)方法;
(4)躏敢、調(diào)用類的靜態(tài)函數(shù)時(shí)不會(huì)自動(dòng)調(diào)用類的構(gòu)造函數(shù)

成員訪問相關(guān)函數(shù):

構(gòu)造方法__construct和析構(gòu)方法__desctruct()
簡單理解:造方法是對象創(chuàng)建完成后第一個(gè)被對象自動(dòng)調(diào)用的方法,這是我們在對象中使用構(gòu)造方法的原因整葡。而析構(gòu)方法是對象在銷毀之前最后一個(gè)被對象自動(dòng)調(diào)用的方法件余,這也是我們在對象中使用析構(gòu)方法的原因。所以通常使用構(gòu)造方法完成一些對象的初始化工作遭居,使用析構(gòu)方法完成一些對象在銷毀之前的清理工作啼器。

php中可以使用&符號,將對象默認(rèn)的賦值傳值俱萍,更改為引用傳值

克隆
克隆函數(shù):clone(對象名);
克隆方法__clone()

判斷:instanceof

面向?qū)ο笕筇匦裕悍庋b端壳,繼承,多態(tài)

封裝:計(jì)算機(jī)中的封裝枪蘑,就是對外隱藏內(nèi)部實(shí)現(xiàn)的細(xì)節(jié)损谦,對外僅公開接口,通過public岳颇、private照捡、protected、final话侧、static等關(guān)鍵字栗精。來限制屬性或方法的訪問等級;
封裝并不是一種語法瞻鹏,就書寫一個(gè)類的過程時(shí)悲立,對屬性的一種設(shè)計(jì)思想;
繼承:面向?qū)ο笳Z言最大的一個(gè)功能就繼承新博。繼承表示的是一種能力薪夕。在創(chuàng)建一個(gè)類時(shí),無需添加任何代碼就可以擁有已存在的類的功能叭披。
還可以在不更改現(xiàn)有的類的代碼而進(jìn)行功能的擴(kuò)展寥殖。
語法:
class ClassName extends AnotherClass {
}
parent關(guān)鍵字,主要用于當(dāng)子類中重寫了父類的方法時(shí)涩蜘,又想在子類中調(diào)用父類中被重寫的方法嚼贡,就可以使用parent指向父類
多態(tài):多態(tài)就是多種形態(tài),體現(xiàn)在代碼就是同一個(gè)公開的方法多個(gè)內(nèi)部實(shí)現(xiàn)同诫,簡單理解就是不同對象做一件事得到不同結(jié)果粤策。


兩種特殊的類:一個(gè)類只能被繼承、一個(gè)類只能被實(shí)例化误窖。

抽象類與抽象方法:只能被繼承不能被實(shí)例化(abstract)
abstract class 類名{成員}
抽象方法不能是private修飾叮盘,原因抽象類中的抽象方法就是為了被繼承秩贰,如果聲明為private子類無法使用。



接口:只包含抽象方法與常量的抽象類可以定義為接口
語法:
interface 接口名{
接口成員
}
接口不是類柔吼,只能被類實(shí)現(xiàn)(implements)毒费,
接口雖然不能被類繼承,但是接口可以繼承接口愈魏。


最終類與最終方法:不允許其他的類來修改本類的代碼(final)
語法:
final class 類名{
//類成員
}

重載:

PHP中沒有真正意義的重載;php中的重載指的是對一個(gè)非公開觅玻,或不存在的屬性或方法的一種處理方法。
屬性重載:
__get():沒權(quán)限訪問時(shí)候自動(dòng)調(diào)用( 訪問私有屬性 )
__set(): 無權(quán)操作的屬性賦值時(shí), 或不存在的屬性賦值時(shí), __set()自動(dòng)調(diào)用(方法用來設(shè)置私有屬性)
__isset() : 用isset() 判斷對象不可見的屬性時(shí)(protected/private/不存在的屬性) 會(huì)引發(fā) __isset()來執(zhí)行
方法重載:
__call():作用:在調(diào)用對象中不存在的方法時(shí)培漏,就會(huì)出現(xiàn)系統(tǒng)報(bào)錯(cuò)溪厘,然后退出, 聲明時(shí)候自動(dòng)調(diào)用:就是在調(diào)用一個(gè)對象中不存在的方法時(shí)自動(dòng)調(diào)用(處理一些不存在的方法的錯(cuò)誤調(diào)用牌柄,需要兩個(gè)參數(shù)畸悬,具體的看api)
__callStatic:調(diào)用一個(gè)不存在的靜態(tài)方法的時(shí)候自動(dòng)調(diào)用
__toString():時(shí)機(jī):將一個(gè)對象當(dāng)作字符串輸出的時(shí)候自動(dòng)調(diào)用(直接echo 對象)。必須return

自動(dòng)加載:

__autoload()函數(shù):實(shí)例化對象時(shí)珊佣,自動(dòng)調(diào)用(其它的魔術(shù)方法都是在類中添加起作用蹋宦,這是一個(gè)唯一一個(gè)不在類中添加方法的,只要在頁面中使用掉一個(gè)類彩扔,只要用到這個(gè)類名妆档,就會(huì)自動(dòng)將類名傳給這個(gè)參數(shù))
spl_autoload_register(fun);將我們自己定義的加載函數(shù),注冊到php的自動(dòng)加載機(jī)制中


設(shè)計(jì)模式

所謂的設(shè)計(jì)模式虫碉,就是具有多年開發(fā)經(jīng)驗(yàn)的贾惦,開發(fā)者,在開發(fā)的過程中敦捧,為了解決某個(gè)需求须板,而形成的一套代碼方案
單例模式:就是單一的實(shí)例,一個(gè)類永遠(yuǎn)只能產(chǎn)生一個(gè)實(shí)例



工廠模式:一個(gè)負(fù)責(zé)其他類的實(shí)例化工作



工廠單例模式:并不是工廠類是單例兢卵,而是通過工廠類所創(chuàng)建的其他的類實(shí)現(xiàn)單例
2..png

命名空間:

namespace 空間名\空間名;
use \空間名\空間名
空間成員的訪問
①习瑰、非限定
語法:
空間成員;
說明:
空間成員前什么都不加。
非限定只能訪問當(dāng)前空間中的成員秽荤。
②甜奄、限定
語法:
空間名\空間名\空間成員
說明:
只能訪問當(dāng)前空間的子空間中的成員。
③窃款、完全限定
語法:
\空間名\空間名\空間成員
說明:
可以訪問任意空間中的成員
? 對于空間成員的訪問课兄,掌握以下幾點(diǎn):
? 當(dāng)前空間 所要訪問的空間成員所在的空間
? 當(dāng)前空間與所訪問的空間成員在同一個(gè)空間 直接寫成員名
? 所訪問的空間成員是當(dāng)前空間的子空間 限定
? 訪問其他空間的成員 完全限

數(shù)據(jù)保存:

程序語言中數(shù)據(jù)劃分多種類型,數(shù)據(jù)有兩種方面組成晨继,其一是數(shù)據(jù)的值烟阐,其后是數(shù)據(jù)的類型。
程序在運(yùn)行的過程中,數(shù)據(jù)是保存在內(nèi)存中的變量中的蜒茄,只程序運(yùn)行結(jié)束唉擂,數(shù)據(jù)就會(huì)被銷毀。
為了保存程序在運(yùn)行過程上的產(chǎn)生的數(shù)據(jù)檀葛,我們可以將數(shù)據(jù)保存在文件中玩祟。如果數(shù)據(jù)比較簡單可以選擇文件進(jìn)行保存。
如果使用文件保存數(shù)據(jù)屿聋,由于文件文件中只能保存字符串卵凑。
為了能夠?qū)?shù)據(jù)的類型與值一同保存起來,所以需要使用序列化
序列化
序列化就是將數(shù)據(jù)轉(zhuǎn)換為一種能夠即可以表示類型又可以表示值的字符串胜臊。
serialize(變量);將指定的變量中的數(shù)據(jù)進(jìn)行序列化
反序列化
unserialize(string);
string是序列化后的字符串。
是對string進(jìn)行返回序列化伙判。
對象的序列化與反序列化:
__sellp:將對象轉(zhuǎn)換為字符串用于持久存儲(chǔ)(使用serialize 將對象串行化的時(shí)候會(huì)自動(dòng)調(diào)用象对,串行化一個(gè)對象將會(huì)保存對象的所有屬性變量和類名信息,但是不會(huì)保存對象的方法)
__wakeup:使用unserialize 將字符串還原為對象的時(shí)候會(huì)自動(dòng)調(diào)用

反射機(jī)制

反射(Reflection)一詞形象說明一個(gè)類的作用;獲取所服務(wù)的類所有的信息宴抚,與一個(gè)類相關(guān)的信息

反射類
①勒魔、export方法
ReflectionClass::export(類名或?qū)ο?
說明:
用于返回一個(gè)類相關(guān)成員的描述



②、反射對象
ReflectionClass即然是一個(gè)類也可以被實(shí)例化菇曲。
語法:
$ref = new ReflectionClass(類名或?qū)ο?;
說明:
用于實(shí)例化一個(gè)反射對象


異常:

異常處理語法:
try{
//try語句塊
throw(異常對象);
}catch(異常類 $e){
//異常處理塊
}catch(異常類 $e){
//異常處理塊
}
說明:
在try語句塊中嘗試捕獲與catch后的異常類對應(yīng)的異常對象冠绢,將異常對象捕獲到$e這個(gè)變量中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末常潮,一起剝皮案震驚了整個(gè)濱河市弟胀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喊式,老刑警劉巖孵户,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異岔留,居然都是意外死亡夏哭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門献联,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竖配,“玉大人,你說我怎么就攤上這事里逆〗瑁” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵运悲,是天一觀的道長龄减。 經(jīng)常有香客問我,道長班眯,這世上最難降的妖魔是什么希停? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任烁巫,我火速辦了婚禮,結(jié)果婚禮上宠能,老公的妹妹穿的比我還像新娘亚隙。我一直安慰自己,他們只是感情好违崇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布阿弃。 她就那樣靜靜地躺著,像睡著了一般羞延。 火紅的嫁衣襯著肌膚如雪渣淳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天伴箩,我揣著相機(jī)與錄音入愧,去河邊找鬼。 笑死嗤谚,一個(gè)胖子當(dāng)著我的面吹牛棺蛛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播巩步,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼旁赊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了椅野?” 一聲冷哼從身側(cè)響起终畅,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鳄橘,沒想到半個(gè)月后声离,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘫怜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年术徊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲸湃。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赠涮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出暗挑,到底是詐尸還是另有隱情笋除,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布炸裆,位于F島的核電站垃它,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜国拇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一洛史、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酱吝,春花似錦也殖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至崎岂,卻和暖如春捆毫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冲甘。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工冻璃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人损合。 一個(gè)月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像娘纷,于是被迫代替她去往敵國和親嫁审。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355