Image

跟PHP一起玩轉物件導向:從玩具箱到工具箱-基礎介紹

第一節:物件導向程式設計介紹

第二節:OOP 的基本概念

類別(Class)和物件(Object)

屬性(Attributes)

方法(Methods)

第三節:PHP 中的類別和物件

定義類別

PHP
<?php
namespace Rewrite\\ExerciseObjectOriented;
/**
 *
 * Class Person
 * @package Rewrite\\ExerciseObjectOriented
 */
class Person
{
    /** @var string 屬性-姓名 */
    public string $name;
    /** @var int 屬性-年齡 */
    private int $age;
    /**
     * Person constructor.
     *
     * @param string $name
     * @param int $age
     */
    public function __construct(string $name, int $age)
    {
        $this->name = $name;
        $this->age = $age;
    }
    /**
     * 方法-取得年齡
     *
     * @return int
     */
    public function getAge(): int
    {
        return $this->age;
    }
    /**
     * 方法-設定年齡
     *
     * @param int $age
     */
    public function setAge(int $age): void
    {
        $this->age = $age;
    }
}
  • 創建物件:介紹如何使用 new 關鍵字從類別創建物件的實例。// 創建一個 Person 類別的實例
PHP
$person = new Person();

$person->name = "張三"; // 因為「name」是公開的,所以可以直接『存取』設定屬性值

$person->setAge(20); // 調用方法

echo $person->getAge(); // 輸出年齡

第四節:為何使用物件導向程式設計

封裝(Encapsulation)

繼承(Inheritance)

PHP
<?php

namespace Rewrite\\ExerciseObjectOriented;

/**
 * 交通工具
 *
 * Class Vehicle
 * @package Rewrite\\ExerciseObjectOriented
 */
class Vehicle
{
    /** @var string 廠牌 */
    public string $brand;

    /**
     * @return void
     */
    public function start(): void
    {
        echo "發動引擎";
    }
}
PHP
<?php

namespace Rewrite\\ExerciseObjectOriented;

/**
 * 汽車
 * Car 繼承 Vehicle
 *
 * Class Car
 * @package Rewrite\\ExerciseObjectOriented
 */
class Car extends Vehicle
{
    /**
     * @return void
     */
    public function openTrunk()
    {
        echo "打開後車廂";
    }
}
PHP
$car = new Car();

$car->brand = "Toyota";

$car->start();  // 繼承自 Vehicle 類別

$car->openTrunk();  // Car 類別自己的方法

多型(Polymorphism)

第五節:動手試試看

  • 練習1:定義一個 Person 類別,包含 nameage 屬性,以及一個顯示個人資訊的方法。
PHP
class Person {
/**
* 自行定義內容
*/
}

// 執行端結果
$person1 = new Person("王小明", 25);
$person1->introduce(); // 輸出: 我的名字是 王小明,今年 25 歲。
  • 練習2:創建一個 Student 類別,繼承自 Person 類別,新增學號(studentID)屬性和學習(study)方法。
PHP
class Student extends Person {
/**
* 自行定義內容
*/
}

$student = new Student("林小花", 20);
$student->studentID = "B123456789";
$student->introduce(); // 繼承自 Person 類別
$student->study(); // Student 類別自己的方法