iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 18
0
Modern Web

VUE & PHP (Apache2) & Docker 實戰開發系列 第 18

Day18 - PHP-物件導向(OOP)介紹-Part1

今天來講講剛在學習PHP時就要先有的common sense
OOP物件導向的基礎介紹與操作,包含認識類別與物件的操作,
讓不熟悉類別的人可以了解物件導向的好處,並且了解物件與類別的特性與關係。

“Object-oriented programming is a style of coding that allows developers to group similar tasks into classes.”

物件導向是一種寫程式的方式,它傾向讓開發者把有類似或有關聯的部分抽出來進而重整到類別裡面,
這讓程式保持遵守不重複原則don’t repeat yourself(DRY),對往後程式的維護也更加容易。

一.認識物件(Object)與類別(Class)


首先,先來了解物件(object)與類別(class)的功能與用途。

  • 類別(class),可以比喻為一棟建築的設計藍圖,是讓大家了解建築物的結構與形狀。
  • 物件(object),可以比喻為一棟真的建築物,物件是類別的實例化。

為了要蓋好一棟建築物有了建築物的藍圖還不夠,還需要蓋房子的材料而材料就是所謂的資料(data)。如果沒有按照設計藍圖(類別class)來蓋,這些只會是一堆的材料(資料data)就是個豆腐渣工程。要按程序施工作業才能打造出一棟令人住的安心讓使用者用的放心的建築物。

類別定義結構和行為用來產生物件,當多個物件是由同一個類別產生出來時,每個物件都是一個獨立個體。

二.建立類別(Class)


建立類別的語法很簡單,使用class來定義一個類別,然後在類別名稱後面再加上大括號{}

建立一個新的檔案test.php,建立一個類別名為MyClass

<?php
class MyClass
{
    // 在大括號裡面宣告類別的屬性與方法。
}

$obj = new MyClass;               //使用`new`來實例化類別並且將它存到變數裡。
var_dump($obj);                   //查看類別的內容。

輸出到畫面會顯示

object(MyClass)#1 (0) { }

三.定義類別(Class)的屬性(Properties)


使用屬性(Property),也稱作類別的變數(Variable)來把資料(Data)存入類別裡面。
存取的用法就像普通變數一樣,除非這些變數被物件給綁定了,被綁定的變數只能由物件本身存取。

接下來替MyClass加入屬性(Property),用public決定屬性(Property)的可視性(Visibility),
來定義屬性的名稱(Variable)和值(Value)。

<?php
class MyClass
{
  public $prop1 = "I'm a class property!";
}

$obj = new MyClass;
echo $obj->prop1;                //指定要讀取的物件及屬性,並將它顯示在瀏覽器上。

因為有很多物件實例化自同一個類別,如果沒有指定這些被實例化的物件,
會導致程式碼沒辦法判斷應該讀取哪個物件,所以->在PHP的物件中,用來存取物件的屬性和方法。

輸出到畫面會顯示

I'm a class property!

四.定義類別(Class)的方法(Methods)


方法(Methods)是類別裡面的函式(Functions),物件可以藉由執行這些方法來更動每個物件的行為。

<?php
class MyClass
{
    public $prop1 = "I'm a class property!";

    public function setProperty($newval)
    {
        $this->prop1 = $newval;
    }

    public function getProperty()
    {
        return $this->prop1 . "<br />";
    }
}

$obj = new MyClass;
echo $obj->getProperty();                             //得到屬性的值。

$obj->setProperty("I'm a new property value!");       //設定新的屬性的值。
echo $obj->getProperty();                             //讀取新設定的值。

輸出到畫面會顯示

I'm a class property!
I'm a new property value!

物件導向允許物件透過$this來參考自己。物件使用$this就如同直接使用物件名稱來指定物件,同等於MyClass->prop1

之後會再講到更深入的物件導向,
本篇介紹到此,下次見~


上一篇
Day17 - Vue & Transitions
下一篇
Day19 - Vue & PHP 跨網域
系列文
VUE & PHP (Apache2) & Docker 實戰開發30

尚未有邦友留言

立即登入留言