類的聲明和語法

1.達標和檢測

學(xué)習(xí)PHP的面向?qū)ο?你需要具備PHP面向過程的相關(guān)基礎(chǔ),如不會,請先學(xué)習(xí)PHP基礎(chǔ)部分.

面向?qū)ο笠环N編程思想,已經(jīng)幾十年了,而PHP這門語言到4.0版本的時候才有了面向?qū)ο?所以對于沒有任何計算機語言的童鞋來講,可能瞬間掌握,難度比較大,需要體會和實踐,慢慢領(lǐng)悟,為了防止陷入思想的無底洞,先不要管為什么這么寫,前期我們需要做的,就是熟悉并熟練操作PHP面向?qū)ο蟮幕菊Z法和用法,隨著代碼量的增多,理解自然會深化,前期一定要做到如下幾點:

**1. 類聲明語法 試聲明student類,有score屬性和study方法

  1. 權(quán)限封裝 知道public、 protected、 private各自的可見范圍
  2. 繼承 寫A類,再寫B(tài)類繼承自A類,且要重寫A類中的某個方法
  3. 靜態(tài)屬性與靜態(tài)方法, 知道static靜態(tài)方法需要用類名::方法名()調(diào)用
  4. 魔術(shù)方法 了解常用魔術(shù)方法分別在什么時間被調(diào)用
  5. 寫一個抽象類,并用2個子類分別繼承實現(xiàn) 分析這2個子類有什么共同特點?
  6. 寫一個接口,并用2個類分別繼承實現(xiàn) 分析這2個類有什么共同點?**

能做出這7題,面向?qū)ο缶湍芡ㄟ^并入門了.

2.第一個類

原來我們在學(xué)PHP基礎(chǔ)的時候,函數(shù)是這樣寫的.

//函數(shù)的聲明
function fly(){
    echo "愛需要理由嗎?";
}

//函數(shù)的調(diào)用
fly();

如何改成類?

class 類名{

}
//class是固定寫法,后面加類名(類名使用大駝峰命名法),緊跟著直接寫大括號,然后把函數(shù)直接復(fù)制進去就偶了.
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以后,方法默認不用加public也可以調(diào)用和執(zhí)行,因為默認就是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.類中屬性不能是表達式?

php5.6之前,類名只能是直接傳值或者常量,而不能是表達式的結(jié)果
函數(shù)調(diào)用,運算等等

PHP5.6以后允許使用包含數(shù)組,字符串字面值和常量的標量表達式(數(shù)學(xué)運算,比較運算等)

高中數(shù)學(xué)知識:標量和矢量.....(回憶:標量有大小,無方向,標量無方向)

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;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容