1.達(dá)標(biāo)和檢測
學(xué)習(xí)PHP的面向?qū)ο?你需要具備PHP面向過程的相關(guān)基礎(chǔ),如不會,請先學(xué)習(xí)PHP基礎(chǔ)部分.
面向?qū)ο笠环N編程思想,已經(jīng)幾十年了,而PHP這門語言到4.0版本的時候才有了面向?qū)ο?所以對于沒有任何計算機(jī)語言的童鞋來講,可能瞬間掌握,難度比較大,需要體會和實踐,慢慢領(lǐng)悟,為了防止陷入思想的無底洞,先不要管為什么這么寫,前期我們需要做的,就是熟悉并熟練操作PHP面向?qū)ο蟮幕菊Z法和用法,隨著代碼量的增多,理解自然會深化,前期一定要做到如下幾點:
**1. 類聲明語法 試聲明student類,有score屬性和study方法
- 權(quán)限封裝 知道public、 protected、 private各自的可見范圍
- 繼承 寫A類,再寫B(tài)類繼承自A類,且要重寫A類中的某個方法
- 靜態(tài)屬性與靜態(tài)方法浦马, 知道static靜態(tài)方法需要用類名::方法名()調(diào)用
- 魔術(shù)方法 了解常用魔術(shù)方法分別在什么時間被調(diào)用
- 寫一個抽象類,并用2個子類分別繼承實現(xiàn) 分析這2個子類有什么共同特點?
- 寫一個接口,并用2個類分別繼承實現(xiàn) 分析這2個類有什么共同點?**
能做出這7題,面向?qū)ο缶湍芡ㄟ^并入門了.
2.第一個類
原來我們在學(xué)PHP基礎(chǔ)的時候,函數(shù)是這樣寫的.
//函數(shù)的聲明
function fly(){
echo "愛需要理由嗎?";
}
//函數(shù)的調(diào)用
fly();
如何改成類?
class 類名{
}
//class是固定寫法,后面加類名(類名使用大駝峰命名法),緊跟著直接寫大括號,然后把函數(shù)直接復(fù)制進(jìn)去就偶了.
class Ai{
function fly(){
echo "愛一個人需要理由嗎?";
}
}
但是我們怎么樣調(diào)用呢?如果你直接用函數(shù)調(diào)用的方法( fly(); )去調(diào)用,會直接報錯.說找不到函數(shù)
說明:類是需要先new后,再調(diào)用的,也叫實例化.想一下,什么叫實例化?但從字面意思理解,實例就是現(xiàn)實的例子.翻譯成成中文就是,現(xiàn)實的例子化.
也就是說,我想調(diào)用fly()這個類中的"函數(shù)",需要new Ai();
翻譯的通俗像人話一點:就是新建一個現(xiàn)實的例子.
這個時候它會有一個返回值,這個返回值就是大名鼎鼎的"對象".
完整代碼如下:
class Ai{
function fly(){
echo "愛一個人需要理由嗎?";
}
}
//實例化一個Ai類,返回值是一個對象,儲存在$aiai變量里
$ai = new Ai();
3.類的屬性和方法
更加通俗一點講什么是類?這就需要大家去思考現(xiàn)實的東西了.比如說,我們?nèi)祟?也是一大類,豬類,狗類,自行車類....發(fā)現(xiàn)這些都是一大類,并且有共同的特征,有共同的一些東西.
比如:我們?nèi)祟?你有沒有姓名,年齡,性別,身高,體重等等?這些都是我們?nèi)祟惿聛砭凸逃械膶傩?這在面向?qū)ο蟮乃枷胫薪蓄惖膶傩?
比如,一個正常人,會不會哭,笑,跑,走,生氣這些動作?這在面向?qū)ο笏枷胫薪蓄惖姆椒?
類:說白了就是一整個大類,跟現(xiàn)實中的類一樣,通過屬性(php面向過程中的變量/名詞)和方法(php面向過程中的函數(shù)/動作),模擬人或者物的共同特點.
//這是php面向過程的變量聲明
$name = '老王';
class{
function fly(){
echo '愛一個人需要理由嗎?';
}
}
//實例化一個Ai類,返回值是一個對象,儲存在$aiai變量里
$ai = new Ai();
放在里面就成了屬性
class{
//類的屬性(也可以叫變量)
$name = '老王';
//類的方法(也可以叫函數(shù))
function fly(){
echo '愛一個人需要理由嗎?';
}
}
//實例化一個Ai類,返回值是一個對象,儲存在$aiai變量里
$ai = new Ai();
怎么樣調(diào)用?
class{
$name = '老王';
function fly(){
echo '愛一個人需要理由嗎?';
}
}
//實例化一個Ai類,返回值是一個對象,儲存在$aiai變量里
$ai = new Ai();
$ai->name;
$ai->fly();
發(fā)現(xiàn)還是報錯,是因為類有權(quán)限控制,需要寫public,現(xiàn)在可能還不理解權(quán)限控制.我們后期的教程中會涉及.先照寫就好
class{
public $name = '老王';
function fly(){
echo '愛一個人需要理由嗎?';
}
}
//實例化一個Ai類,返回值是一個對象,儲存在$aiai變量里
$ai = new Ai();
$ai->name;
$ai->fly();
說明:php5以后,方法默認(rèn)不用加public也可以調(diào)用和執(zhí)行,因為默認(rèn)就是public,但之前的版本必須要加public才可以,要不會報語法錯誤
4.類的語法
我們看一下類的語法注意點
//類名,不區(qū)分大小寫 習(xí)慣上市大駝峰
class Stu{
//屬性名 調(diào)用時不加$
public $sn = '00001';
public $name = 'lisi';
//方法名
function ks(){
echo '我叫l(wèi)isi,我來學(xué)PHP';
}
}
//類名,不區(qū)分大寫小,但是我們的編程過程中,要人為的區(qū)分
$stu = new stu();
echo $stu->sn,'<br />'; //調(diào)用屬性.注意:此處一定不能加$符號
$stu->ks();//調(diào)用方法
5.類中屬性不能是表達(dá)式?
php5.6之前,類名只能是直接傳值或者常量,而不能是表達(dá)式的結(jié)果
函數(shù)調(diào)用,運算等等
PHP5.6以后允許使用包含數(shù)組,字符串字面值和常量的標(biāo)量表達(dá)式(數(shù)學(xué)運算,比較運算等)
高中數(shù)學(xué)知識:標(biāo)量和矢量.....(回憶:標(biāo)量有大小,無方向,標(biāo)量無方向)
class Stu{
//public $num = rand(10,100);//報錯
//public $num = 1+2; //沒問題,5.6之前不行
//public $num = array('a','b'=>array('1'));
public $num = 1||0;
}
$stu = new Stu();
echo $stu->num;