早上剛進公司腦袋還有一點空空,來寫個很久沒寫的教學好了。
這文章基本是讓一些學PHP有一陣子,但對物件導向還是搞不明白。
或是對於書上寫的東西,明明就一個很簡單的概念,但書上硬是寫的很困難。
或是作者的中文程度是實在有很大的問題之類的狀況。
我儘可能用極淺顯易懂的方式來說明。因為這會是整個課題系列。
這是第一篇,最初的入門:class
class demo{
}
好!我課講完了......
總覺得我這樣會被丟蕃茄和雞蛋。
觀眾:你這什麼沒來由的就2個單字加個左右括號?
其實這是一個宣告類別(class)的方法。
就是使用class去宣告demo這個類別。
不過要注意的事情是,這邊僅僅就只是宣告。
基本上如果你們學過函式(function)的話,函式寫好是可以直接呼叫使用的。
但是物件並不是你去宣告他就可以使用,重點是我還沒講他要怎麼使用。
上面講到了,class demo這是宣告demo這個類別。
但是類別要被程式碼所引用的話,你必須先將類別「實體化」成物件才行。
這邊我們來談談所謂的「物件」。
其實所謂的「物件」,以現實來說,你週遭的事物實際看到的,存在的都可以是一種物件。
比如說,我是「sam」,sam是我的名字,他所代表的是我的諸多屬性之一。
何謂屬性?我的名字:sam,我的性別:男,我的年齡:(不要問),我的興趣:打電動。
我是sam,我會跑,會跳,會吃,會玩。這些動作是我的「行為能力」,也可以說是功能(方法)。
一個物件中,基本帶有的就是屬性(property)和方法(function)。
觀眾:你扯那麼久了,還沒解釋你一開始那個程式碼是要怎麼運行啦。
ok!我不是講了,你必須要先實體化類別成物件。
在php(在其他很多語言似乎也類似)中,直接實體化是使用(new)這個指令。
class demo{
}
$demo = new demo;
很高興的,很快樂的,我們生成了一個物件,叫做demo的物件。而將$demo這個變數的型態,轉變成了物件。
不過......
這個物件好像啥事都不能做。就空空的什麼都沒有。
觀眾:(手握雞蛋)
好啦好啦!江湖規矩!hello world來拜訪大家。
不過我先提一下,上面講過,一個物件會有「屬性」跟「方法」。
所以既然我們要印出hello world,基本上就先提供一個方法直接印出hello world好了。
class demo{
function hello(){
echo 'Hello World!';
}
}
$demo = new demo;
$demo->hello();
這邊,我宣告了一個方法叫做hello(),他的目的只有一個,就是印出Hello World!
在物件中宣告方法的指令仍然是function,但要注意這和你一般宣告函式不同。
在物件中的函式「無法」被外部的程式碼直接呼叫,你直接使用的話會變成函式不存在。
(我就一直搞不懂為什麼php不直接像其他的語言宣告成員+名稱就好了。)
今天的這第一堂課就先上到這邊。
下一堂課要教大家什麼是屬性及物件成員。
值日生記得擦黑板,倒垃圾。放學回家要乖乖的路上別亂跑。
過馬路要看紅綠燈,記得扶老太太過馬路。
還有騎車不小心撞到小妹妹要去「秀秀」,不要不爽就踹人家二腳!
有人知道為什麼大陸人把「物件」稱為「面向对象」呢?
我沒有什麼意思,只是好奇為什麼這麼翻譯。
對象:Object
面向:Orient
請問這段後面的new demo是正確的嗎?
我的觀念是new demo(),代表new demo這個cless的建構子
$demo = new demo;
寫程式是這樣:有質疑的時候,何妨執行下去試試看?