close

學程式的道路上.....我跌跌撞撞的過程

文章為我平時發生錯誤的解決方法

因為擔心下次碰到時會忘記

所以就將他筆記下來了

如果有大大發現我的敘述錯誤

或者有哪些更有效率的方法

也請大大們不吝嗇的提供指教

謝謝~


一直以來都搞不清楚類別、函式、物件導向、__construct 這些是什麼

有看過有聽過,網路上也看了很多文章,但是就是無法理解

經過一位前輩的開導後,比較清楚這些觀念了

所以趕快趁記憶猶新時,將這些觀念做成自己的筆記,記錄下來

 

1.首先,Party 的類別,每一個類別都養成習慣給它一個namespace命名空間

可以把他想像成一個人

 

姓:APP 名子:Party

所以當你在其他的php檔案中,已經載入了這一支檔案了

那你就只需要在程式碼開頭,加上 Use APP/Party 就可以使用該類別了

目前這個步驟就已經建立好一個Party的類別了

*會希望在每個類別中,都加上namespace命名空間是因為如果在比較大型的專案中,不小心或者一定要再有一個相同的Party類別,那麼這時候就可以依照namespace的名稱判斷

Demo.php

<?php
namespace APP;
class Party{






}

    

//所以只要執行下方的程式碼,就可以呼叫該物件囉
$new_party = new Party();


這時候你會看見,我執行了可是怎麼什麼都沒有

這是當然的呀~因為都還沒給類別任何東西阿~~

接著講解一下什麼是「建構子 construct

建構子 construct」就是當我一建立新的物件,也就是當我執行 $new_party = new Party();

就會無條件的自動執行 __construct function

所以我用下方程式碼做範例

Demo.php

<?php
namespace APP;
class Party{

    protected $number = 0;

    public function __construct()
    {
        
    }
    public function print_number(){

        return $this->number;
    }

}

$new_party = new Party();
echo $new_party->print_number();

//得到數字0的結果

紅色文字是新增的程式碼,解說一下這邊的程式碼:

$new_party = new Party(); 這一行

我建立了一個新的物件叫做$new_party

當我建立這個物件時,會自動執行__construct() 這一個 function

而這一個function 回傳了受到保護的一個參數($number)

可以把 $this->number; 想成Party的 $number

最後在執行 echo $new_party->print_number(); 這一行

取得了的結果 0


接著來點稍微進階的 

Demo.php

<?php
namespace APP;
class Party{

    protected $number = 0;

    public function __construct($newnumber = 1)
    {
        $this->number = $newnumber;
        
    }
    public function print_number(){

        return $this->number;
    }



}

$new_party = new Party();
echo $new_party->print_number();

//得到數字1的結果

紅色文字是新增的程式碼,解說一下程式碼

我建立了一個新的物件叫做$new_party

當我沒有指定新的物件有一個值時,會自動帶入 $newnumber = 1 這一個參數

$this->number = $newnumber; 這一行是指將$newnumber = 1 這一個參數給一開始宣告的$number

所以現在 $number 已經被取代成數字1

最後一樣執行 echo $new_party->print_number(); 這一行

就會得到數字1的結果了


再來再做一些變化

Demo.php ​​​​​​​

<?php
namespace APP;
class Party{

    protected $number = 0;

    public function __construct($newnumber = 1)
    {
        $this->number = $newnumber;
    }
    public function print_number(){

        return $this->number;
    }

}

$new_party = new Party(2);
echo $new_party->print_number();

//得到數字2的結果

仔細看一下 $new_party = new Party(2); 這一行

在 new Party() 的地方改成了 new Party(2) 

這會讓我在建立一個新的物件 $new_party 同時,將數字2的值帶入 __construct() 這一個 function

所以現在有數字2$newnumber就不會在是數字1了

所以現在的 $number 已經變成了數字2,是因為 $this->number = $newnumber; 的 $newnumber 值為數字2

最後一樣執行 echo $new_party->print_number(); 這一行

就會得到數字2的結果了


那麼物件導向(一)就先筆記到這邊

將會在物件導向(二)再做『繼承』的筆記

arrow
arrow

    Neil 發表在 痞客邦 留言(0) 人氣()