版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PHP面向?qū)ο蠹夹g(shù)面向?qū)ο蟮腜HPPHP5的面向?qū)ο竽P蚉HP的類與對(duì)象PHP5面向?qū)ο筇匦悦嫦驅(qū)ο蟪绦蛟O(shè)計(jì)概述 面向?qū)ο?對(duì)象的概念是面向?qū)ο蠹夹g(shù)的核心。在現(xiàn)實(shí)世界里,我們面對(duì)的所有事物都是對(duì)象,如計(jì)算機(jī)、電視機(jī)、自行車等。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象是一個(gè)由信息及對(duì)信息進(jìn)展處理的描繪所組成的整體,是對(duì)現(xiàn)實(shí)世界的抽象。 面向?qū)ο蟮娜齻€(gè)主要特性: 對(duì)象的行為:可以對(duì)對(duì)象施加哪些操作;如電視機(jī)的開、關(guān)、轉(zhuǎn)換頻道等。 對(duì)象的狀態(tài):當(dāng)施加那些方法時(shí),對(duì)象如何響應(yīng);如電視機(jī)的外形、尺寸、顏色等; 對(duì)象的標(biāo)識(shí):如何區(qū)分具有一樣行為與狀態(tài)的不同對(duì)象。PHP 5的面向?qū)ο竽P?面向?qū)ο蟮母拍頞OPOOPOb
2、ject-Oriented Programming, 面向?qū)ο蟮木幊碳夹g(shù)為編程人員敞開了一扇大門,使其編程的代碼更簡(jiǎn)潔、更易于維護(hù),并且具有更強(qiáng)的可重用性。 什么是類? 類是具有一樣屬性和效勞的一組對(duì)象的集合。它為屬于該類的所有對(duì)象提供了統(tǒng)一的抽象描繪,其內(nèi)部包括屬性和效勞兩個(gè)主要部分。在面向?qū)ο蟮木幊陶Z(yǔ)言中,類是一個(gè)獨(dú)立的程序單位,它應(yīng)該有一個(gè)類名并包括屬性說明和效勞說明兩個(gè)主要部分。 什么是對(duì)象? 對(duì)象是系統(tǒng)中用來(lái)描繪客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)根本單位,數(shù)據(jù)與代碼都被捆綁在一個(gè)實(shí)體中。一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)展操作的一組行為組成。從更抽象的角度來(lái)說,對(duì)象是問題域或?qū)崿F(xiàn)域
3、中某些事物的一個(gè)抽象,它反映該事物在系統(tǒng)中需要保存的信息和發(fā)揮的作用;它是一組屬性和有權(quán)對(duì)這些屬性進(jìn)展操作的一組行為的封裝體??陀^世界是由對(duì)象和對(duì)象之間的聯(lián)絡(luò)組成的。 類和對(duì)象的關(guān)系 類與對(duì)象的關(guān)系就如模具和鑄件的關(guān)系,類的實(shí)例化結(jié)果就是對(duì)象,而對(duì)對(duì)象的抽象就是類.類描繪了一組有一樣特性屬性和一樣行為方法的對(duì)象。 PHP的類與面向?qū)ο笠?、從PHP4到PHP5是一次全新革新,PHP5已經(jīng)完全支持面向?qū)ο?,而不是再像PHP4那樣僅僅實(shí)現(xiàn)一個(gè)繼承的功能,增加了大量的特性和修正根本“對(duì)象的行為。二、在PHP中定義類:格式:class classname public $property =value;
4、./屬性 function functionname args 代碼 ./類的方法成員函數(shù)生成對(duì)象類的實(shí)例化: $對(duì)象名=new classname ;三、類的屬性及方法 屬性: 通過在類定義中使用關(guān)鍵字 public來(lái)聲明變量,即創(chuàng)立了類的屬性。 如:public $somevar; 方法成員函數(shù): 通過在類定義中聲明函數(shù),即創(chuàng)立了類的方法。 如:function somefun參數(shù)列表 . . 屬性與方法的訪問: PHP中屬性與方法的引用操作符是“ - 格式:對(duì)象-屬性或方法 實(shí)例: name.; $zhangsan=new Person;/生成對(duì)象zhangsan$zhangsan-na
5、me=zhangsan; /給對(duì)象中的name賦值$zhangsan-age=26;/給對(duì)象中的age賦值$zhangsan-say;/調(diào)用方法sayecho age is .$zhangsan-age; /輸出age值 ? 使用對(duì)象屬性: : 在一個(gè)類中,可以訪問一個(gè)特殊的指針$this,例如上面的Person類中一個(gè)屬性為$name,那么當(dāng)在該類中通過一個(gè)操作設(shè)置或訪問該變量時(shí),使用$this-name來(lái)引用. 對(duì)象的生成: : 當(dāng)定義好類后,我們使用new關(guān)鍵字來(lái)生成一個(gè)對(duì)象。 $對(duì)象名稱 = new 類名稱; 由于對(duì)象資料封裝的特性,對(duì)象屬性類中定義的變量是無(wú)法由主程序區(qū)塊直接來(lái)訪問的
6、,必須通過對(duì)象來(lái)調(diào)用類中所定義的屬性和行為函數(shù),間接地達(dá)成存取控制類中資料的目的。 對(duì)象和類的關(guān)系: : 對(duì)象是實(shí)際存在的,占有動(dòng)態(tài)資源。 類是對(duì)象的藍(lán)圖,可能占有靜態(tài)資源。 對(duì)象屬性占有動(dòng)態(tài)資源 類靜態(tài)屬性實(shí)際上是有類名字空間上的“全局變量 性能考慮: : 每個(gè)對(duì)象要單獨(dú)占用數(shù)據(jù)空間 增加的調(diào)用層次可能消耗執(zhí)行時(shí)間再論:方法的參數(shù)形式和傳遞方式方法的參數(shù)可以是根本數(shù)據(jù)類型、數(shù)組和類對(duì)象。 根本數(shù)據(jù)類型:值參傳遞 數(shù)組:值參傳遞 類對(duì)象:引用傳遞構(gòu)造函數(shù)與析構(gòu)函數(shù) 構(gòu)造函數(shù): : 大多數(shù)類都有一種稱為構(gòu)造函數(shù)的特殊方法。當(dāng)創(chuàng)立一個(gè)對(duì)象時(shí),它將自動(dòng)調(diào)用構(gòu)造函數(shù),通常用它執(zhí)行一些有用的初始化任務(wù)。
7、 構(gòu)造函數(shù)的聲明與其它操作的聲明一樣,只是其名稱必須是兩個(gè)下劃線_construct 。這是PHP5中的變化;PHP4的版本中,構(gòu)造函數(shù)的名稱必須與類名一樣。為了向下兼容,假如一個(gè)類中沒有名為_construct 的方法,PHP將搜索一個(gè)與類名一樣的方法。格式:function _construct 參數(shù) . . name=lisi;$this-age=28; function say echo my name is .$this-name.; echo my age is .$this-age.; $per=new person;$per-say;$per-name=zhangsan;$pe
8、r-age=26;$per-say;? 析構(gòu)函數(shù):與構(gòu)造函數(shù)相對(duì)的就是析構(gòu)函數(shù)。析構(gòu)函數(shù)是PHP5新添加的內(nèi)容,在PHP4中沒有析構(gòu)函數(shù)。析構(gòu)函數(shù)允許在銷毀一個(gè)類之前執(zhí)行的一些操作或完成一些功能,這些操作或功能通常在所有對(duì)該類的引用都被重置或超出作用域時(shí)自動(dòng)發(fā)生。與構(gòu)造函數(shù)的名稱類似,一個(gè)類的析構(gòu)函數(shù)名稱必須是兩個(gè)下劃線_destruct 。析構(gòu)函數(shù)不能帶有任何參數(shù)。例如: 訪問類型類型的訪問修飾符允許開發(fā)人員對(duì)類成員的訪問進(jìn)展限制。這是PHP5的新特性,但卻是OOP語(yǔ)言的一個(gè)好的特性。而且大多數(shù)OOP語(yǔ)言都已支持此特性。PHP5支持如下3種訪問修飾符:public 公有的 默認(rèn)的privat
9、e 私有的protected 受保護(hù)的 一、public 公有修飾符: 類的成員將沒有訪問限制,所有的外部成員都可以訪問讀和寫這個(gè)類成員。注:在PHP5之前的所有版本中,類的成員都 是public的。例:public $name; 二、private 私有修改符: 被定義為private的成員,對(duì)于同一個(gè)類里的所有成員是可見的,即是沒有訪問限制;但對(duì)于該類的外部代碼是不允許改變甚至讀操作,對(duì)于該類的子類,也不能訪問 private修飾的成員。例: private $var1 = A; /屬性 private function getValue /函數(shù)三、protected保護(hù)成員修飾符:被修飾
10、為protected的成員不能被該類的外部代碼訪問。但是對(duì)于該類的直接子類有訪問權(quán)限,可以進(jìn)展屬性、方法的讀及寫操作。被子類繼承的protected成員,在子類外部同樣不能被訪問 注:在PHP5中假如類的成員沒有指定成員訪問修飾符,使用var聲明成員將被視為public 。_call處理調(diào)用錯(cuò)誤 當(dāng)試圖調(diào)用一個(gè)對(duì)象中不存在的方法時(shí),就會(huì)產(chǎn)生錯(cuò)誤。PHP提供了_call這個(gè)方法來(lái)處理這種情況。/_callfunction _call$function_name, $args print 你所調(diào)用的函數(shù):$function_name參數(shù):; print_r$args; /$args為參數(shù)數(shù)組 pr
11、int “不存在!n“; 靜態(tài)屬性和方法 PHP中使用static關(guān)鍵字來(lái)定義靜態(tài)屬性或方法 在類內(nèi)部,不能用this來(lái)引用靜態(tài)變量或方法,而需要用self來(lái)引用。self:$靜態(tài)屬性、self:靜態(tài)方法 在類外部可以使用:類:$靜態(tài)屬性、類:靜態(tài)方法const關(guān)鍵字 const是一個(gè)定義常量的關(guān)鍵字,在PHP中定義常量使用的是define這個(gè)函數(shù),但是在類里面定義常量使用的是const這個(gè)關(guān)鍵字 用const修飾的成員屬性的訪問方式和static修飾的成員訪問的方式差不多,也是使用類名,在方法里面使用self關(guān)鍵字。但是不用使用$符號(hào),也不能使用對(duì)象來(lái)訪問。 const CONSTANT =
12、 constant value; echo self:CONSTANT;/類內(nèi)部訪問echo ClassName:CONSTANT;/類外部訪問克隆對(duì)象 有時(shí)可能需要根據(jù)一個(gè)對(duì)象完全克隆出一個(gè)一模一樣的對(duì)象,而且克隆以后,兩個(gè)對(duì)象互不干擾。 在PHP5中要?jiǎng)?chuàng)立一個(gè)對(duì)象的副本,使用關(guān)鍵字clone來(lái)實(shí)現(xiàn)$obj = new Class;$objectcopy=clone $obj;對(duì)象的比較 要進(jìn)展對(duì)象的比較,我們可能會(huì)想到使用=和=兩個(gè)比較運(yùn)算符。=是比較兩個(gè)對(duì)象的內(nèi)容=是比較對(duì)象的句柄,即引用地址 假如建立一個(gè)對(duì)象并克隆了一個(gè)新對(duì)象,這個(gè)新對(duì)象與原對(duì)象有一樣的內(nèi)容,因此使用=比較兩個(gè)對(duì)象為T
13、rue,但使用=進(jìn)展比較,那么返回為False,因?yàn)閮蓚€(gè)對(duì)象的句柄及內(nèi)存地址并不一樣??寺∫粋€(gè)成員方法 PHP5定義了一個(gè)特殊的方法名, 稱為_clone,是在對(duì)象克隆時(shí)自動(dòng)調(diào)用的方法。 用_clone方法將建立一個(gè)與原對(duì)象擁有一樣屬性和方法的對(duì)象。假如想在克隆后改變?cè)瓕?duì)象的內(nèi)容,需要在_clone中重寫本來(lái)的屬性和方法 _clone可以沒有參數(shù),它自動(dòng)包含$this和$that兩個(gè)指針,$this指向復(fù)本,而$that指向本來(lái)。自動(dòng)加載類在編寫面向?qū)ο蟪绦驎r(shí),常規(guī)做法是將每一個(gè)類保存為一個(gè)PHP源文件。當(dāng)在一個(gè)PHP文件中需要調(diào)用一個(gè)類時(shí)很容易就可以找到,然后通過include把這個(gè)文件引入
14、就可以了。不過有的時(shí)候,在工程中文件眾多,要一一將所需類的文件include進(jìn)來(lái),是一個(gè)很讓人頭疼的事。PHP5提供了一個(gè)_autoload來(lái)解決這個(gè)問題在組織定義類的文件名時(shí),需要按照一定的規(guī)那么,最好以類名為中心,加上統(tǒng)一的前綴或后綴形成文件名class_student.php 或 student_class.php 或 student.php把對(duì)象串行化 有時(shí)候需要把一個(gè)對(duì)象在網(wǎng)絡(luò)上傳輸,為了方便傳輸,可以把整個(gè)對(duì)象轉(zhuǎn)化為二進(jìn)制串,等到達(dá)另一端時(shí),再?gòu)?fù)原為原來(lái)的對(duì)象,這個(gè)過程稱之為串行化。 PHP使用serialize函數(shù)來(lái)串行化一個(gè)對(duì)象,其參數(shù)為對(duì)象名, 返回值為一個(gè)字符串 serialize返回的字符串含義模糊,一般也不會(huì)解析這個(gè)串來(lái)得到對(duì)象的信息,而是使用unserialize函數(shù)來(lái)反串行化對(duì)象,這個(gè)函數(shù)的參數(shù)即為serialize的返回值,輸出當(dāng)然是重新組織好的對(duì)象。把對(duì)象串行化 _sleep和_wakeup PHP5中的對(duì)象串行化的時(shí)候,會(huì)調(diào)用一個(gè)_sleep方法來(lái)完成一些睡前的事情;而在重新醒來(lái),即由二進(jìn)制串重新組成一個(gè)對(duì)象的時(shí)候,剛會(huì)自動(dòng)調(diào)用PHP的另一個(gè)函數(shù)_wakeup,做一些對(duì)象醒來(lái)就要做的動(dòng)作。 _sleep函數(shù)不承受任何參數(shù), 但返回一個(gè)數(shù)組,其
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通基礎(chǔ)設(shè)施項(xiàng)目預(yù)算編制方案
- 青少年藝術(shù)節(jié)歌唱活動(dòng)方案
- 美術(shù)工具課件教學(xué)課件
- 課件怎么結(jié)尾教學(xué)課件
- 2024-2025年高中政治第一單元公民的政治生活2.4民主監(jiān)督:守望公共家園教案新人教版必修2
- 2024-2025學(xué)年八年級(jí)道德與法治下冊(cè)第四單元崇尚法治精神8.1公平正義的價(jià)值課時(shí)作業(yè)新人教版
- 2024-2025學(xué)年高中地理第四章自然環(huán)境對(duì)人類活動(dòng)的影響2全球氣候變化對(duì)人類活動(dòng)的影響達(dá)標(biāo)訓(xùn)練含解析中圖版必修1
- 2024-2025學(xué)年新教材高中化學(xué)第三章鐵金屬材料2.1合金學(xué)案新人教版必修1
- 2024年定制家庭護(hù)理服務(wù)協(xié)議
- 餐飲行業(yè)服務(wù)培訓(xùn)方案
- 環(huán)保產(chǎn)品管理規(guī)范
- 《世界主要海峽》
- 中醫(yī)確有專長(zhǎng)綜述范文(5篇)
- 非小細(xì)胞肺癌NCCN指南解讀
- EBO管理體系與案例分享
- 攔砂壩施工設(shè)計(jì)方案
- GB/T 20934-2016鋼拉桿
- 教研課平行四邊形和梯形的復(fù)習(xí)ppt
- S曲線和技術(shù)進(jìn)化法則TRIZ專題培訓(xùn)課件
- 銅礦普查簡(jiǎn)報(bào)銅礦
- 消防設(shè)施定期檢查、檢測(cè)、維修保養(yǎng)記錄
評(píng)論
0/150
提交評(píng)論