首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 類與物件導向程式設計入門:定義、實例化、方法調用

     編輯:PHP 綜合知識

前言

PHP 5 起完整支援物件導向(OOP),類是封裝數據與行為的藍圖。本文從零開始,講解類的定義、屬性、方法、實例化、$this 指針、構造函數與實際應用模式。

1. 定義第一個類

<?php
class Calculator {
    // 屬性(可加可见性:public/protected/private)
    public $lastResult = 0;

    // 方法
    public function add($n1, $n2) {
        $this->lastResult = $n1 + $n2;
        return $this->lastResult;
    }

    public function subtract($n1, $n2) {
        $this->lastResult = $n1 - $n2;
        return $this->lastResult;
    }

    public function multiply($n1, $n2) {
        $this->lastResult = $n1 * $n2;
        return $this->lastResult;
    }
}
?>

2. 實例化與方法調用

<?php
require 'Calculator.php';

$calc = new Calculator(); // 创建对象

echo $calc->add(10, 5);       // 15
echo $calc->subtract(20, 8);  // 12
echo $calc->multiply(6, 7);   // 42

// 访问属性
echo "上一次結果: {$calc->lastResult}"; // 42
?>

3. 構造函數 __construct() 初始化狀態

<?php
class User {
    public $name;
    public $email;

    // 帶參數構造,支持預設值
    public function __construct($name, $email = '') {
        $this->name = $name;
        $this->email = $email;
    }

    public function greet() {
        return "Hello, {$this->name}!";
    }
}

$user1 = new User('小明');
$user2 = new User('小紅', 'xiaohong@example.com');
echo $user1->greet(); // Hello, 小明!
?>

4. 可視性控制

關鍵字類內部子類外部
public✓✓✓
protected✓✓✗
private✓✗✗

最佳實踐:屬性預設 private,通過 getter/setter 控制存取;方法預設 public,內部輔助方法用 protected/private。

5. 靜態成員與常量

<?php
class Math {
    const PI = 3.1415926;
    public static $callCount = 0;

    public static function circleArea($r) {
        self::$callCount++;
        return self::PI * $r * $r;
    }
}

echo Math::PI;           // 3.1415926
echo Math::circleArea(5); // 78.539815
echo Math::$callCount;   // 1
?>

6. 實戰:簡易計算器表單處理

<!-- form.html -->
<?php // calc.php require 'Calculator.php'; $calc = new Calculator(); $ops = ['add' => 'add', 'sub' => 'subtract', 'mul' => 'multiply']; if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($ops[$_POST['op']])) { $method = $ops[$_POST['op']]; $result = $calc->$method($_POST['a'], $_POST['b']); echo "結果: $result"; } ?>

7. 現代 PHP OOP 必知特性速覽

  • 介面:interface 定義契約,類 implements 實現。
  • 抽象類:abstract class 含抽象方法,不可實例化。
  • Trait:trait 實現橫向代碼復用(PHP 5.4+)。
  • 魔術方法:__call, __get, __set, __toString, __invoke 等。
  • 命名空間:namespace App\Service; 避免類名衝突,配合 PSR-4 自動載入。
  • 依賴注入:構造函數注入依賴,而非內部 new,便於測試與解耦。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved