PHP學(xué)習(xí)筆記之面向?qū)ο笤O(shè)計(jì)_PHP教程
推薦:PHP文件上傳代碼用法php文件上傳代碼編寫(xiě)過(guò)程 1. 先判斷是否上傳文件 2. 如果有再來(lái)判斷上傳中是否出錯(cuò) 3. 如果出錯(cuò),則提示出錯(cuò)信息 4. 如查沒(méi)出錯(cuò),再判斷文件類(lèi)型 5. 如果類(lèi)型符合條件,再判斷指定目錄中有沒(méi)有存在該文件 6. 如果沒(méi)有就把該文件移至指定目錄 在php中上傳文件必須知道的
面向?qū)ο笤O(shè)計(jì)是php程序開(kāi)發(fā)中一個(gè)很重要的內(nèi)容塊,如果你想成為高級(jí)php程序員我們必須知道面向?qū)ο笤O(shè)計(jì)具體用法與寫(xiě)法。
維護(hù)簡(jiǎn)單 模塊化是面向?qū)ο缶幊讨械囊粋(gè)特征。實(shí)體被表示為類(lèi)和同一名字空間中具有相同功能的類(lèi),我們可以在名字空間中添加一個(gè)類(lèi)而不會(huì)影響該名字空間的其他成員。
可擴(kuò)充性 面向?qū)ο缶幊虖谋举|(zhì)上支持?jǐn)U充性。如果有一個(gè)具有某種功能的類(lèi),就可以很快地?cái)U(kuò)充這個(gè)類(lèi),創(chuàng)建一個(gè)具有擴(kuò)充的功能的類(lèi)。
代碼重用 由于功能是被封裝在類(lèi)中的,并且類(lèi)是作為一個(gè)獨(dú)立實(shí)體而存在的,提供一個(gè)類(lèi)庫(kù)就非常簡(jiǎn)單了。
它比較適合多人合作來(lái)開(kāi)發(fā)項(xiàng)目,所以現(xiàn)在很多大中型網(wǎng)站都選擇了用OOP來(lái)開(kāi)發(fā)。
本文主要講解了用php做面向?qū)ο缶幊痰淖罨镜姆椒ê痛a實(shí)例,如何創(chuàng)建一個(gè)class和如何生成一個(gè)class的實(shí)例等等,只是一個(gè)入門(mén),非常的簡(jiǎn)單,要想深學(xué)這點(diǎn)是遠(yuǎn)遠(yuǎn)不夠的。只適合php的初學(xué)者
public 表示全局,類(lèi)內(nèi)部外部子類(lèi)都可以訪問(wèn);
private表示私有的,只有本類(lèi)內(nèi)部可以使用;
protected表示受保護(hù)的,只有本類(lèi)或子類(lèi)或父類(lèi)中可以訪問(wèn);
- 數(shù)據(jù)抽象和信息隱藏
- 繼承
- 多態(tài)性
在PHP中使用類(lèi)進(jìn)行封裝的辦法:
當(dāng)然你可以用你自己的辦法,但有一個(gè)標(biāo)準(zhǔn)總是好的。
PHP中類(lèi)的數(shù)據(jù)成員使用 "var" 定義,數(shù)據(jù)成員是沒(méi)有類(lèi)型直到被賦值。一個(gè)數(shù)據(jù)成員可能是一個(gè) integer、數(shù)組、聯(lián)合數(shù)組(associative array)或甚至對(duì)象(object). 方法在類(lèi)里定義成函數(shù),在方法里存取數(shù)據(jù)成員,你必須使用$this->name 這樣的辦法,否則對(duì)方法來(lái)說(shuō)是一個(gè)函數(shù)的局部變量。
使用 new 來(lái)創(chuàng)建一個(gè)對(duì)象
然后使用成員函數(shù)
setX 成員函數(shù)將 5 賦給對(duì)象(而不是類(lèi))obj 中成員變量, 然后 getX 返回值 5.
你也可以用對(duì)象引用來(lái)存取成員變量,例如:$obj->x=6; 然而,這不一種好的面向?qū)ο缶幊痰姆椒āN覉?jiān)持你應(yīng)使用成員函數(shù)來(lái)設(shè)置成員變量的值和通過(guò)成員函數(shù)來(lái)讀取成員變量。如果你認(rèn)為成員變量是不可存取的除了使用成員函數(shù)的辦法,你將成為一個(gè)好的面向?qū)ο蟪绦騿T。 但不幸的是PHP本身沒(méi)有辦法聲明一個(gè)變量是私有的,所以允許糟糕的代碼存在。
在 PHP 中繼承使用 extend 來(lái)聲明。
這樣類(lèi) "Another" 的對(duì)象擁有父類(lèi)的所用成員變量及方法函數(shù),再加上自己的成員變量及成員函數(shù)。如:
多重繼承不被支持,所以你不能讓一個(gè)類(lèi)繼承多個(gè)類(lèi)。
在繼承類(lèi)中你可以重新定義來(lái)重定義方法,如果我們?cè)?"Another" 重新定義 getX,那么我們不再能存取 "Something" 中的成員函數(shù) getX. 同樣,如果我們?cè)诶^承類(lèi)中聲明一個(gè)和父類(lèi)同名的成員變量,那么繼承類(lèi)的變量將隱藏父類(lèi)的同名變量。
你可以定義一個(gè)類(lèi)的構(gòu)造函數(shù), 構(gòu)造函數(shù)是和類(lèi)同名的成員函數(shù),在你創(chuàng)建類(lèi)的對(duì)象時(shí)被調(diào)用。
所以可以用如下方法創(chuàng)建對(duì)象:
構(gòu)造函數(shù)自動(dòng)賦值 5 給成員變量 x, 構(gòu)造函數(shù)和成員函數(shù)都是普通的PHP函數(shù),所以你可以使用缺省參數(shù)。
然后:
缺省參數(shù)的定義方法和 C++ 一樣,因此你不能傳一個(gè)值給 Y 但讓 X 取缺省值,實(shí)參的傳遞是從左到右,當(dāng)沒(méi)有更多的實(shí)參時(shí)函數(shù)將使用缺省參數(shù)。
只有當(dāng)繼承類(lèi)的構(gòu)造函數(shù)被調(diào)用后,繼承類(lèi)的對(duì)象才被創(chuàng)建,父類(lèi)的構(gòu)造函數(shù)沒(méi)有被調(diào)用,這是PHP不同其他面向?qū)ο笳Z(yǔ)言的特點(diǎn),因?yàn)闃?gòu)造函數(shù)調(diào)用鏈?zhǔn)敲嫦驅(qū)ο缶幊痰奶攸c(diǎn)。如果你想調(diào)用基類(lèi)的構(gòu)造函數(shù),你不得不在繼承類(lèi)的構(gòu)造函數(shù)中顯式調(diào)用它。這樣它能工作是因?yàn)樵诶^承類(lèi)中父類(lèi)的方法全部可用。
?>
多態(tài)性。
?>
和封裝有關(guān)的魔術(shù)方法:
__set():是直接設(shè)置私有成員屬性值時(shí),自動(dòng)調(diào)用的方法
__get():是直接獲取私有成員屬性值時(shí),自動(dòng)調(diào)用的方法
__isset(); 是直接isset查看對(duì)象中私有屬性是否存時(shí)自動(dòng)調(diào)用這個(gè)方法
__unset(); 是直接unset刪除對(duì)象中私有屬性時(shí),自動(dòng)調(diào)用的方法
分享:php防止sql注入的函數(shù)介紹具體用法 addslashes防止SQL注入 雖然國(guó)內(nèi)很多PHP程序員仍在依靠addslashes防止SQL注入,還是建議大家加強(qiáng)中文防止SQL注入的檢查。addslashes的問(wèn)題在 于黑客 可以用0xbf27來(lái)代替單引號(hào),而addslashes只是將0xbf27修改為0xbf5c27,成為一個(gè)有效的多字節(jié)字符,其中的0xb
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶(hù)端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-PHP學(xué)習(xí)筆記之面向?qū)ο笤O(shè)計(jì)
。