亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP的面向對象

2019-11-08 01:51:06
字體:
來源:轉載
供稿:網友

php的面向對象:

對象是客觀存在的一個實體。類是對對象抽象的一個描述。概念:對象(實體)、類、 類與對象的關系。oop面向對象編程的特點:封裝、繼承、多態類和對象的關系: 類的實例化結果就是一個對象(使用new關鍵字) 對對象的抽象描述就是一個類

一、如何定義一個類,和使用

1.1 語法格式: [修飾符] class 類名{ 【成員屬性】定義變量 【成員方法】定義函數 } [修飾符] class 類名 [extends 父類] [implements 接口1[,接口2...]]{ 【成員屬性】定義變量 【成員方法】定義函數 }1.2 其中成員屬性格式: 修飾符 $變量名[=默認值]; 如:public $name="zhangsan"; 注意:成員屬性不可以是帶運算符的表達式、變量、方法或函數的調用。 如: public $var3 = 1+2; public $var4 = self::myStaticMethod(); public $var5 = $myVar; 正確定義方式: public $var6 = 100; //普通數值(4個標量:整數、浮點數、布爾、字串) public $var6 = myConstant; //常量 public $var7 = self::classConstant; //靜態屬性 public $var8 = array(true, false); //數組 常用屬性的修飾符:public、PRotected、private、static、var1.3 其中成員方法格式: [修飾符] function 方法名(參數..){ [方法體] [return 返回值] } 常用的修飾符:public、protected、private、static、abstract、final1.4 對象: 他是通過new 類()來產生的對象。其中new稱為實例化 也就是:類的實例化就會產生一個對象。 如: $p = new Person();1.5 $this 關鍵字: 表示自己,表示當前使用對象。 我們在類中調用自己的成員屬性或函數都是使用 $this->調用。 注意:非靜態方法中可以使用this關鍵字

二、構造函數和析構函數

2.1. 構造方法(構造函數): 當我們通過new關鍵字來創建一個對象時,第一個自動執行的方法稱為構造方法。 方法名__construct(); 主要用于初始化對象。 (在php4.0時可使用與類名重名的方法作為構造方法)2.2. 析構方法:當這個對象被銷毀時最后自動調用的方法,稱為析構方法。 __destruct(); 目的是釋放資源(如關閉連接、文件,釋放資源)

三、封裝(訪問控制)

3.1 封裝:就是將屬性私有,并提供公有的setter放置與getter取值方法 public(公有) protected(受保護) private(私有) =========================================================== 在本類中 Y Y Y 在子類中 Y Y N 在類外邊 Y N N

四、 重載

4.1 屬性重載中的四個魔術方法:__set() __get() __isset() __unset() * __get():當我們直接輸出一個對象中的非公有屬性時會自動調用的方法, 并將屬性名以第一個參數傳進去。 __get($name){...} * __set(); 當我們直接設置一個對象中的非公有屬性時會自動調用的方法, 并將屬性名以第一個參數,值作為第二參數傳進去。 __set($name,$value){...} __isset()當對未定義的變量調用isset() 或 empty()時,__isset() 會被調用。 //當isset判斷一個對象的非公有屬性是否存在時,自動調用此方法。 public function __isset($param){ return isset($this->$param); } __unset()當對未定義的變量調用unset()時,__unset() 會被調用。 //當unset銷毀一個對象的非公有屬性時,自動調用此方法。 public function __unset($param){ unset($this->$param); }4.2 方法的重載: * mixed __call ( string $name , array $arguments ) mixed __callStatic ( string $name , array $arguments ) php5.3.0支持 當調用一個不可訪問方法(如未定義,或者不可見)時,__call() 會被調用。 其中第一個參數表示方法名,第二參數表示調用時的參數列表(數組類型) 當在靜態方法中調用一個不可訪問方法(如未定義,或者不可見)時,__callStatic() 會被調用。

五、 繼承

5.1. 繼承:extends 假如B類繼承A類,那么就繼承了A中所有非私有屬性和方法(函數)。   其中A叫父類(基類)?!。陆凶宇悾ㄅ缮悾? class B extends A{ .... } 在php中類只支持【單一繼承】,就是一類只能繼承一個父類。 parent關鍵字:若子類出現覆蓋父類的方法,那么有時還想調用被覆蓋掉了的方法, 我們就是用關鍵字【parent::父類方法】還有使用類名 class A{ public function __construct(){ //.... } } class B extends A{ public function __construct(){ parent::__construct();//注意要調用一下父類的構造方法 //.... } }

六、 final、static和const

6.1 final關鍵字:主要用于修飾類與成員方法(函數) 使用final關鍵字修飾類,表示這個類不可以有子類。(一般是沒有必要有子類的,防止有子類的覆蓋) 使用final關鍵字修飾的方法,不可以在子類中被覆蓋(重寫)。 目的:一是為了安全,二是沒有必要*6.2 static關鍵字:表示靜態的意思: 用于修飾類的屬性和方法 *static關鍵字修飾方法稱為靜態方法,可以不用new(實例化)就可以直接使用方法:如 類名::方法名 注意:靜態方法在實例化后的對象也可以訪問 //$對象名->靜態方法名 static關鍵字修飾屬性稱為靜態屬性,可以不用new(實例化)就可以直接訪問屬性:如 類名::屬性名 注意:靜態屬性在實例化后的對象不可以訪問; //$對象名->靜態屬性名 注意:靜態屬性是共享的。也就是new很多對象也是共用一個屬性 *在靜態方法中不可以使用非靜態的內容。就是不讓使用$this 在類的方法中可以使用其他靜態屬性和靜態方法,不過要使用self關鍵字: 如 【self::靜態屬性名】或【self::靜態方法名】 (>PHP5.3)在一個類的方法中若沒有出現$this的調用,默認此方法為靜態方法。*6.3. const關鍵字: 在類中修飾成員屬性,將其定義成常量(不可修改的), 一般要求常量名都是大寫的,沒有“$”符 沒有其他修飾符(public) 在其他方法中使用常量: 【self::常量名】 定義格式: const 成員常量名="值"; 使用:在類的方法中: echo self::成員常量名; 在類的外部: echo 類名::成員常量名;6.4. 檢測當前對象是否是屬性指定的類 instanceof 用于確定一個 PHP 變量是否屬于某一類 class 的實例: is_a — 如果對象屬于該類或該類是此對象的父類則返回 TRUE

七、 類型約束

1. 類型約束可以使用的類型是:數組或對象。 若指定的一個類名,那么可傳入本類及子類的對象進去。 可以使用的約束類型:(復合類型)數組array,類名、抽象類名、接口名//如下面的類class MyClass{ /** * 測試函數 * 第一個參數必須為類OtherClass的一個對象 */ public function test(OtherClass $otherclass) { echo $otherclass->var; } /** * 另一個測試函數 * 第一個參數必須為數組 */ public function test_array(array $input_array) { print_r($input_array); }}

八、其他魔術方法:

1. 對象復制clone 克隆一個對象,因為對象屬于引用類型,普通的“=”號屬于引用賦值, 所有需要clone來復制一份。 魔術方法:__clone() 當執行clone克隆時會自動調用的方法。2. __toString()方法:魔術方法,當我們直接要輸出一個對象時,如echo $a,print $a, 那么會自動調用的方法。 注意:__toString()方法必須返回一個字串類型的值。3. *自動加載類函數__autoload(類名): 當new 實例化一個對象時,這個類若不存在,則自動調用此函數,并將類名存入參數 我可以使用這個實現類的自動加載。

九、 對象序列化(串行化)(webservice xml)(在對象持久化存儲、和傳輸中使用)

serialize() -- 串行化 (轉換成一個可儲存的值)unserialize() -- 反串行化 (從已存儲的表示中創建 PHP 的值)json_encode() --將數組轉換成字符串json_decode() --轉換后的字符串 轉換成 數組php里面的值都可以使用函數serialize()來返回一個包含字節流的字符串來表示。unserialize()函數能夠重新把字符串變回php原來的值。 序列化一個對象將會保存對象的所有變量,但是不會保存對象的方法,只會保存類的名字。json_encode:對變量進行 JSON 編碼 //通過json_encode()函數將數組轉換成字符串 //轉換的字符串只有很用的數據json_decode: //將json_encode()轉換后的字符串 轉換成 數組 //json_decode() __sleep 和 __wakeup __sleep(): 是執行串行化時自動調用的方法,目的是實現資源類型的屬性實關閉操作。 注意:sleep方法需要返回一個數組,其中數組中的值是串行化時要保留的屬性名 __wakeup():是在執行反串行化時自動調用的方法,目的是實現資源屬性的打開(sleep方法關閉的資源)public function __seep(){ return array('server', 'username', 'passWord', 'db'); //此串行化要保留四個屬性}

十、 抽象類:

當類中有一個方法,他沒有方法體,也就是沒有花括號,直接分號結束。如 public abstract function fun();象這種方法我們叫抽象方法,必須使用關鍵字abstract定義,包含這種方法的類必須是抽象類也要使用關鍵字abstract加以聲明。抽象類的特點:不能實例化,也就new成對象若想使用抽象類,就必須定義一個類去繼承這個抽象類,并定義覆蓋父類的抽象方法(實現抽象方法)。其實抽象類對于子類(實現類),有一個約束的作用,

含有抽象方法的類肯定是抽象類,但是不是所有的抽象類都必須包含抽象方法。

十一、 接口:

假如一個抽象類中所有的方法都是抽象的,那么我們可以使用另外一種方式定義:接口 接口使用關鍵字interface來定義,接口中只能有常量與抽象方法。 格式: interface 接口名{ [常量定義] [抽象方法定義] //注意不要有abstract關鍵字 }

實現方式:class 類名 implements 接口名,接口名2{ 實現體。。 }

十二、多態

*多態(使用方式):對于同一個方法,傳入不同對象,實現了不同的效果,這個就是多態的意思, 需要使用的技術:繼承或實現,方法的覆蓋(重寫)。實例:主板:mainboard PCI插槽(規范接口) 第三方生產聲卡: soundCard網卡: networkCard 設計模式:單例、單態設計模式http://localhost/.../index.php?m=類名&a=方法名&其他參數http://localhost/.../user/add.htmlhttp://news.sohu.com/web/123456.htmlhttp://news.sohu.com//find?id=123456

十三、異常處理:

在php5中有一種新的錯誤處理機制--異常處理:(采用面向對象方式的)涉及的類:Exception異常類結構: <?php class Exception { protected $message = 'Unknown exception'; // 異常信息 protected $code = 0; // 用戶自定義異常代碼 protected $file; // 發生異常的文件名 protected $line; // 發生異常的代碼行號 function __construct($message = null, $code = 0); final function getMessage(); // 返回異常信息 final function getCode(); // 返回異常代碼 final function getFile(); // 返回發生異常的文件名 final function getLine(); // 返回發生異常的代碼行號 final function getTrace(); // backtrace() 數組 final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息 /* 可重載的方法 */ function __toString(); // 可輸出的字符串 } ?> 使用: 1. throw new Exception("年齡不可以為負數"); //異常拋出 2. try{ //捕獲異常 $s->age=30; $s->age=-40; 3. }catch(Exception $e){ //異常處理 echo $e->getmessage(); }

php面向對象中的實用類:

Db.class.php 表數據信息操作類page.class.php 分頁類 方法:屬性:URL地址、條件、總頁數、總條數、頁大小、當前 頁 構造方法(參數:總條數、頁大小、條件) 私有方法:計算最大頁數、判斷當前頁數是否越界 輸出分頁信息方法:(輸出給Model類中limit方法使用) 私有屬性的getter方法(__GET()); 輸出分頁信息方法(輸出HTML代碼)(就是:【上一頁】【下一頁】。。。。) images.class.php 圖片處理類(等比縮放、圖片水印、裁剪);fileupload.class.php 文件上傳類驗證碼輸出
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91国语精品自产拍在线观看性色| 久久久精品999| 久久精品国产视频| 精品久久久精品| 一区二区欧美亚洲| 日韩电影中文字幕在线观看| 亚洲欧美色婷婷| 97视频在线播放| 欧美午夜电影在线| 亚洲精品一区av在线播放| 精品亚洲一区二区三区四区五区| 国产91精品久久久久久久| 亚洲成年人在线| 欧美巨乳美女视频| 国产91av在线| 亚洲国产精品网站| 91麻豆国产语对白在线观看| 日韩精品视频在线观看免费| 97精品国产97久久久久久免费| 国产精品h在线观看| 色综合视频一区中文字幕| 欧洲日本亚洲国产区| 97久久精品人人澡人人爽缅北| 亚洲欧美国产日韩中文字幕| 久久99久久99精品免观看粉嫩| 久久99久久亚洲国产| 久久久久久久久久久成人| 亚洲欧美日本精品| 欧美国产精品人人做人人爱| 精品爽片免费看久久| 亚洲人成五月天| 97精品国产91久久久久久| 国产乱人伦真实精品视频| 精品少妇v888av| 高清在线视频日韩欧美| 久久91亚洲人成电影网站| 欧美高清视频一区二区| 欧美激情xxxx性bbbb| 亚洲区中文字幕| 91在线看www| 日韩中文在线中文网在线观看| 57pao国产成人免费| 麻豆国产va免费精品高清在线| 久久国产精品首页| 久久97精品久久久久久久不卡| 日韩精品视频免费专区在线播放| 欧美成人sm免费视频| 亚洲人成在线免费观看| 在线日韩日本国产亚洲| 91国内产香蕉| 精品成人国产在线观看男人呻吟| 91在线网站视频| 日韩资源在线观看| 久久国产一区二区三区| 久久久精品一区| 欧美精品在线观看| 日韩精品丝袜在线| 久久久免费观看| 日韩在线免费观看视频| 亚洲精品成人网| 秋霞午夜一区二区| 国产精品视频久久久久| 中文字幕亚洲一区二区三区五十路| 国产日产欧美精品| 精品国产1区2区| 91在线免费观看网站| 国产精品久久久久免费a∨大胸| 日韩免费在线免费观看| 亚洲精品av在线| 久久精品国产久精国产一老狼| 一区二区国产精品视频| 日韩av一区在线观看| 亚洲精品大尺度| 亚洲精品少妇网址| 欧美日韩亚洲一区二区三区| 亚洲黄页视频免费观看| 91伊人影院在线播放| 国产91精品高潮白浆喷水| 欧美日韩国产精品一区| 成人免费看片视频| 久久天堂av综合合色| 欧美日韩黄色大片| 亚洲福利视频网| 国产精品视频白浆免费视频| 成人免费视频a| 韩国19禁主播vip福利视频| 国产精品久久久一区| 亚洲二区在线播放视频| 欧美小视频在线观看| 8050国产精品久久久久久| 欧美影院成年免费版| 免费av一区二区| 91精品视频专区| 国产偷国产偷亚洲清高网站| 久久这里有精品| 国产日产久久高清欧美一区| 国产不卡精品视男人的天堂| 欧美极品美女视频网站在线观看免费| 国产欧美日韩中文字幕| 国产精品久久久久久亚洲影视| 日韩视频免费在线| 日韩美女主播视频| 91美女高潮出水| 97人人爽人人喊人人模波多| 欧美午夜片在线免费观看| 69久久夜色精品国产7777| 国产精品精品视频一区二区三区| 亚洲网站在线播放| 亚洲天堂色网站| 欧美黑人xxxⅹ高潮交| 亚洲少妇中文在线| 国产精品久久久久久久久久新婚| 亚洲已满18点击进入在线看片| 91最新国产视频| 亚洲国产免费av| 亚洲精品www久久久久久广东| 国产香蕉97碰碰久久人人| 亚洲精品v欧美精品v日韩精品| 欧美精品一区二区三区国产精品| www.xxxx精品| 欧美性猛交xxxxx免费看| 欧洲成人免费aa| 91免费电影网站| 福利一区福利二区微拍刺激| 久久久国产成人精品| 久久激情视频久久| 久久久久免费精品国产| 欧美日本精品在线| www.亚洲成人| 91人人爽人人爽人人精88v| 日本久久久久久久久| 国产区亚洲区欧美区| 国产精品香蕉国产| 亚洲第一在线视频| 国产精品www| 91亚洲精品久久久久久久久久久久| 国产精品夫妻激情| 欧洲成人午夜免费大片| 91久久久久久国产精品| 狠狠躁夜夜躁久久躁别揉| 成人av资源在线播放| 日韩av在线天堂网| 亚洲精品成人免费| 亚洲精品二三区| 亚洲激情视频在线播放| 亚洲第一免费播放区| www.亚洲人.com| 色婷婷综合久久久久中文字幕1| 久久精品电影一区二区| 欧美国产日本高清在线| 91精品国产91久久久久福利| 精品国产91乱高清在线观看| 亚洲一区二区三区视频| 欧美性生交xxxxxdddd| 美女精品久久久| 国产偷国产偷亚洲清高网站| 欧美亚洲一区在线| 中日韩美女免费视频网址在线观看| 欧美性少妇18aaaa视频| 国产精品青青在线观看爽香蕉| 精品国产鲁一鲁一区二区张丽| 欧美午夜宅男影院在线观看| 国产香蕉精品视频一区二区三区| 亚洲香蕉在线观看|