物件導向是一種程式設計思想,和具體語言無關.c,java,JavaScript,php都可以進行帶有自己風格的物件導向的開發.
類是對一類事物都有的屬性和行為的封裝,為什麼需要類?首先我們要想想如果沒有類會怎麼樣?如果沒有類,假設現在我們要表示一輛普通的自行車,我們會想輪子數量2個,價格多少…然後我們又要表示一輛小孩子騎得自行車,我們又去想輪子數量4個,價格多少…這樣,只要有一輛自行車,我們都會去想它應該會有`輪子數量`這個屬性,還會有價格這個屬性…..有多少種類的自行車,我們就要想他會有哪些屬性,哪些功能多少遍.
<strong>array</strong>(<strong>'</strong><strong>名字</strong><strong>'</strong>=><strong>'</strong><strong>普通自行车</strong><strong>'</strong>,<strong>'</strong><strong>轮子数量</strong><strong>'</strong>=>2,<strong>'</strong><strong>价格</strong><strong>'</strong>=><strong>'...'</strong>);<br> <strong>array</strong>(<strong>'</strong><strong>名字</strong><strong>'</strong>=><strong>'</strong><strong>儿童自行车</strong><strong>'</strong>,<strong>'</strong><strong>轮子数量</strong><strong>'</strong>=>4,<strong>'</strong><strong>价格</strong><strong>'</strong>=><strong>'...'</strong>);
如果有類會怎麼樣呢?假設我們有一個自行車類:
<strong>class </strong>自行车{<br> <strong>public </strong><strong>$</strong><strong>名字</strong>;<br> <strong>public </strong><strong>$</strong><strong>轮子数量</strong>;<br> <strong>public </strong><strong>$</strong><strong>价格</strong>;<br> <strong>public function </strong>骑(){<br> <strong>echo </strong><strong>'</strong><strong>骑</strong><strong>'</strong>.$this-><strong>名字</strong>;<br> }<br> }
現在只要是自行車,一上來不用去想它有什麼屬性,功能.直接實例化自行車類就好.屬性在類裡面已經寫好了,功能也有了.不用你再一一去想了.
$自行车对象1=<strong>new </strong>自行车();<br> $自行车对象1-><strong>名字</strong>=<strong>'</strong><strong>普通自行车</strong><strong>'</strong>;<br> $自行车对象1-><strong>轮子数量</strong>=2;<br> <br> $自行车对象2=<strong>new </strong>自行车();<br> $自行车对象2-><strong>名字</strong>=<strong>'</strong><strong>儿童自行车</strong><strong>'</strong>;<br> $自行车对象2-><strong>轮子数量</strong>=4;
在這裡,類感覺更像是一種約束,或者說規定,規定著所有自行車都會有的屬性和功能.不可能說實例化自行車類後出現一個啪啪啪的屬性.因為在你實例化的同時,初始屬性就已經被限定了.
現在問題又來了,類別的實例化物件可以有很多個,這些物件怎麼互相區別呢?
透過相同屬性的不同值來區別.
如上面對象1的名字和對象2的名字是不同的,輪子數量也不同,這就是它們的區別.
問題又來了,能用方法來區別嗎?
不能
在php中所有物件共用類別的方法.也就是說只要物件一使用方法,這個方法都是從類別那裡拿過來的,物件自己沒有.而物件自己做的,僅僅是給屬性賦值,以此來區別於其他對象而已.
物件和陣列:
物件:屬性名=屬性值
數組:鍵=>值
Php中陣列和物件在序列化後結構很相似,如圖:
第二行為對象的序列化結果,可以看到對象的序列化結果的前面有`自行車`三個字,這三個字標明了對像是屬於自行車類的.這樣反序列化後,它也能找到它的類.之所以在序列化的結果中看不到方法的信息,是因為方法是屬於類的,反序列化後通過`自行車`這個信息找到對應類,再調用類中的方法即可.

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1
好用且免費的程式碼編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),