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

首頁 > 語言 > PHP > 正文

php面向對象,自動加載類,對象串行化,多態的應用

2024-09-04 11:43:45
字體:
來源:轉載
供稿:網友

自動加載類:很多開發者寫面向對象的應用程序時,對每個類的定義建立一個 PHP 源文件,一個很大的煩惱是不得不在每個腳本,每個類一個文件,開頭寫一個長長的包含文件的列表.

在軟件開發的系統中,不可能把所有的類都寫在一個PHP文件中,當在一個PHP文件中需要調用另一個文件中聲明的類時,就需要通過include把這個文件引入,不過有的時候,在文件眾多的項目中,要一一將所需類的文件都include進來,是一個很讓人頭疼的事,所以我們能不能在用到什么類的時候,再把這個類所在的php文件導入呢?這就是我們這里我們要講的自動加載類.

在 PHP 5 中,可以定義一個 __autoload()函數,它會在試圖使用尚未被定義的類時自動調用,通過調用此函數,腳本引擎在 PHP 出錯失敗前有了最后一個機會加載所需的類,__autoload()函數接收的一個參數,就是你想加載的類的類名,所以你做項目時,在組織定義類的文件名時,需要按照一定的規則,最好以類名為中心,也可以加上統一的前綴或后綴形成文件名,比如xxx_classname.php、classname_xxx.php以及就是classname.php等等.

本例嘗試分別從 MyClass1.php 和 MyClass2.php 文件中加載 MyClass1 和 MyClass2 類,代碼如下:

  1. function __autoload($classname
  2.     require_once $classname . '.php'
  3.  
  4. //MyClass1類不存在自動調用__autoload()函數,傳入參數”MyClass1” 
  5. $obj  = new MyClass1(); 
  6.  
  7. //MyClass2類不存在自動調用__autoload()函數,傳入參數”MyClass2” 
  8. $obj2 = new MyClass2(); 

對象串行化

有時候需要把一個對象在網絡上傳輸,為了方便傳輸,可以把整個對象轉化為二進制串,等到達另一端時,再還原為原來的對象,這個過程稱之為串行化, 就像我們現在想把一輛汽車通過輪船運到美國去,因為汽車的體積比較大,我們可以把汽車拆開成小的部件,然后我們把這些部件通過輪般運到美國去,到了美國再把這些部件組裝回汽車。

有兩種情況我們必須把對象串行化,第一種情況就是把一個對象在網絡中傳輸的時候要將對象串行化,第二種情況就是把對象寫入文件或是數據庫的時候用到串行化。

串行化有兩個過程,一個是串行化,就是把對象轉化為二進制的字符串,我們使用serialize()函數來串行化一個對象,另一個是反串行化,就是把對象轉化的二進制字符串再轉化為對象, 我們使用unserialize()函數來反串行化一個對象.

PHP中serialize()函數的參數為對象名,返回值為一個字符串,Serialize()返回的字符串含義模糊,一般我們不會解析這個串來得到對象的信息,我們只要把返回來的這個字符串傳到網絡另一端或是保存到方件中即可.

PHP中unserialize()函數來反串行化對象,這個函數的參數即為serialize()函數的返回值,輸出當然是重新組織好的對象,代碼如下:

  1. class Person 
  2.     //下面是人的成員屬性 
  3.     var $name;  //人的名子 
  4.     var $sex;    //人的性別 
  5.     var $age;    //人的年齡 
  6.  
  7.     //定義一個構造方法參數為屬性姓名$name、性別$sex和年齡$age進行賦值 
  8.     function __construct($name=""$sex=""$age=""
  9.     { 
  10.         $this->name=$name
  11.         $this->sex=$sex
  12.         $this->age=$age
  13.     } 
  14.  
  15.     //這個人可以說話的方法, 說出自己的屬性 
  16.     function say() 
  17.     { 
  18.         echo "我的名子叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."";//開源代碼Vevb.com 
  19.     } 
  20.  
  21. $p1=new Person("張三""男", 20); 
  22.  
  23. $p1_string=serialize($p1); //把一個對象串行化,返一個字符串 
  24.  
  25. echo $p1_string."";  //串行化的字符串我們通常不去解析 
  26.  
  27. $p2=unserialize($p1_string);  //把一個串行化的字符串反串行化形成對象$p2 
  28.  
  29. $p2->say(); 

多態的應用

多態是除封裝和繼承之外的另一個面象對象的三大特性之一,我個人看來PHP中雖然可以實現多態,但和c++還有Java這些面向對象的語言相比,多態性并不是那么突出,因為PHP本身就是一種弱類型的語言,不存在父類對象轉化為子類對象或者是子類對象轉化為父類對象的問題,所以多態的應用并不是那么的明顯;所謂多態性是指一段程序能夠處理多種類型對象的能力,比如說在公司上班,每個月財務發放工資,同一個發工資的方法,在公司內不同的員工或是不同職位的員工,都是通過這個方法發放的,但是所發的工資都是不相同的。所以同一個發工資的方法就出現了多種形態。對于面向對象的程序來說,多態就是把子類對象賦值給父類引用,然后調用父類的方法,去執行子類覆蓋父類的那個方法,但在PHP里是弱類型的,對象引用都是一樣的不分父類引用,還是子類引用。

我們現在來看一個例子,首先還是要使用多態就要有父類對象和子類對象的關系。做一個形狀的接口或是抽象類做為父類,里面有兩個抽象方法,一個求周長的方法,另一個是求面積的方法;這接口的子類是多種不同的形狀,每個形狀又都有周長和面積,又因為父類是一個接口,所以子類里面就必須要實現父類的這兩個周長和面積的抽象方法,這樣做的目的是每種不同形狀的子類都遵守父類接口的規范,都要有求周長和求面積的方法,代碼如下:

  1. //定義了一個形狀的接口,里面有兩個抽象方法讓子類去實現 
  2. interface Shape 
  3.     function area(); 
  4.     function perimeter(); 
  5.  
  6. //定義了一個矩形子類實現了形狀接口中的周長和面積 
  7. class Rect implements Shape 
  8.     private $width
  9.     private $height
  10.  
  11.     function __construct($width$height
  12.     { 
  13.         $this->width=$width
  14.         $this->height=$height
  15.     } 
  16.  
  17.     function area() 
  18.     { 
  19.         return "矩形的面積是:".($this->width*$this->height); 
  20.     } 
  21.  
  22.     function perimeter() 
  23.     { 
  24.         return "矩形的周長是:".(2*($this->width+$this->height)); 
  25.     } 
  26.  
  27. //定義了一個圓形子類實現了形狀接口中的周長和面積 
  28. class  Circular implements Shape 
  29.     private $radius
  30.  
  31.     function __construct($radius
  32.     { 
  33.         $this->radius=$radius
  34.     } 
  35.  
  36.     function area() 
  37.     { 
  38.         return "圓形的面積是:".(3.14*$this->radius*$this->radius); 
  39.     } 
  40.  
  41.     function perimeter() 
  42.     { 
  43.         return "圓形的周長是:".(2*3.14*$this->radius); 
  44.     } 
  45. }  
  46.  
  47. //把子類矩形對象賦給形狀的一個引用 
  48. $shape=new Rect(5, 10); 
  49.  
  50. echo $shape->area()." 
  51. "; 
  52. echo $shape->perimeter()." 
  53. "; 
  54. //開源代碼Vevb.com 
  55. //把子類圓形對象賦給形狀的一個引用 
  56. $shape=new Circular(10); 
  57.  
  58. echo $shape->area()." 
  59. "; 
  60. echo $shape->perimeter()." 
  61. "; 
  62.  
  63. //上例執行結果: 
  64. //矩形的面積是:50 
  65. //矩形的周長是:30 
  66. //圓形的面積是:314 
  67. //圓形的周長是:62.8 
好了關于它們三個我們有詳細的介紹了.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产精品久久久| 欧美不卡视频一区发布| 久久久久久久国产精品| 欧美一性一乱一交一视频| 57pao国产成人免费| 欧美高清videos高潮hd| 久久成年人视频| 久久国产精品久久久久久| 欧美成年人视频| 中文在线不卡视频| 情事1991在线| 国产精品尤物福利片在线观看| 国产亚洲欧美日韩美女| 色多多国产成人永久免费网站| 色偷偷亚洲男人天堂| 国产成人涩涩涩视频在线观看| 国产精品99导航| 日韩在线观看网址| 国产精品狠色婷| 欧美午夜www高清视频| 国产精品久久久久久久av大片| 成人免费视频网址| 91免费看国产| 青青草国产精品一区二区| 日韩有码视频在线| 欧美日韩精品中文字幕| 日韩中文字幕在线| 日韩av在线播放资源| 狠狠久久五月精品中文字幕| 国产精品久久久久久久久久| 欧美诱惑福利视频| 26uuu久久噜噜噜噜| 欧美特级www| 亚洲免费精彩视频| 日韩美女视频在线观看| 久久久天堂国产精品女人| 国产精品爽爽爽| 久久免费观看视频| 国产精品狼人色视频一区| 精品五月天久久| 亚洲娇小xxxx欧美娇小| 亚洲黄色成人网| 一本大道亚洲视频| 人人做人人澡人人爽欧美| 亚洲bt欧美bt日本bt| 国产在线视频不卡| 色哟哟亚洲精品一区二区| 欧美激情精品久久久久久蜜臀| 国产日韩欧美在线| 欧美日韩高清区| 日韩在线观看你懂的| 97国产精品人人爽人人做| 欧美性资源免费| 久久全球大尺度高清视频| 欧美男插女视频| 国产亚洲一区二区精品| 欧美又大粗又爽又黄大片视频| 欧美激情在线观看| 2020欧美日韩在线视频| 亚洲第一男人天堂| 成人免费观看网址| 日韩在线播放av| 欧美亚洲视频在线看网址| 欧美精品在线免费| 欧美在线视频免费播放| 日韩在线免费视频观看| 高清亚洲成在人网站天堂| 亚洲美女av在线| 成人黄色免费在线观看| 久久综合久久美利坚合众国| 欧美一级在线播放| 91国产在线精品| 美女av一区二区三区| 日韩电影中文字幕一区| 欧美日韩国产综合视频在线观看中文| 亚洲的天堂在线中文字幕| 91香蕉嫩草影院入口| 色综合天天综合网国产成人网| 亚洲毛片在线观看.| 久久久久久午夜| 热久久这里只有| 欧美激情第一页xxx| 日韩精品免费在线| 热久久这里只有| 国产精品久久久久久久久久久久| www.欧美精品| 久热精品视频在线| 国产国语videosex另类| 啊v视频在线一区二区三区| 亚洲午夜激情免费视频| 欧美性理论片在线观看片免费| 综合136福利视频在线| 日本a级片电影一区二区| 最近2019年手机中文字幕| 欧美日韩精品在线观看| 青青久久aⅴ北条麻妃| 精品偷拍各种wc美女嘘嘘| 日本高清不卡的在线| 欧美成人合集magnet| 国产精品盗摄久久久| 国产丝袜一区二区三区| 久久亚洲私人国产精品va| 91精品久久久久久综合乱菊| 国产精品扒开腿做爽爽爽男男| 成人午夜在线观看| 亚洲精选中文字幕| 伊人男人综合视频网| 国模精品系列视频| 国产成人极品视频| 日韩欧美国产中文字幕| 国产有码一区二区| 久久av在线播放| 日韩在线观看成人| 中文字幕久精品免费视频| 亚洲va欧美va国产综合久久| 日韩成人激情视频| 日韩欧美aaa| 日韩精品中文字幕视频在线| 91超碰caoporn97人人| 国产精品久久久av| 欧美视频在线看| 国内揄拍国内精品| 欧美交受高潮1| 一区二区三区美女xx视频| 国产亚洲欧洲高清| 国产精品久久综合av爱欲tv| 久久天天躁日日躁| 97精品伊人久久久大香线蕉| 性欧美xxxx交| 欧美一级免费视频| 国产精品专区h在线观看| 久久久国产一区二区三区| 色阁综合伊人av| 神马国产精品影院av| 国产精品免费看久久久香蕉| 在线成人激情视频| 欧美裸体男粗大视频在线观看| 国产精品久久久久久久久免费看| 亚洲国产古装精品网站| 亚洲男女自偷自拍图片另类| 国产999精品视频| 国产v综合v亚洲欧美久久| 精品免费在线视频| 成人欧美一区二区三区黑人孕妇| 久久精品视频在线播放| 久久99久久久久久久噜噜| 亚洲午夜性刺激影院| 久久久久久久91| 欧美成人免费一级人片100| 国产精品一区二区三区成人| 久久久精品免费视频| 国产精品一二三视频| 九九久久精品一区| 欧美日韩视频在线| 欧美成aaa人片在线观看蜜臀| 国产精品美女久久久久av超清| 国产精品海角社区在线观看| 国产精品久久不能| 国产91精品久久久久久久| 中文字幕日韩免费视频| 国产一区二区香蕉| 亚洲国产精品视频在线观看| 日韩av色在线| 中文字幕综合一区|