學程式的道路上.....我跌跌撞撞的過程
文章為我平時發生錯誤的解決方法
因為擔心下次碰到時會忘記
所以就將他筆記下來了
如果有大大發現我的敘述錯誤
或者有哪些更有效率的方法
也請大大們不吝嗇的提供指教
謝謝~
一直以來都搞不清楚類別、函式、物件導向、__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的結果了
那麼物件導向(一)就先筆記到這邊
將會在物件導向(二)再做『繼承』的筆記