首頁 >資料庫 >mysql教程 >使用 OOP 和 MySQL 建立 PHP CRUD 應用程式:最佳實務指南

使用 OOP 和 MySQL 建立 PHP CRUD 應用程式:最佳實務指南

Patricia Arquette
Patricia Arquette原創
2025-01-11 07:20:43859瀏覽

Building a PHP CRUD Application with OOP and MySQL: A Best Practice Guide

高效管理資料庫操作對於 PHP 應用開發至關重要。 CRUD(建立、讀取、更新、刪除)是最常見的資料庫操作之一。採用物件導向程式設計 (OOP) 原則有助於讓您的程式碼更簡潔、更易於重複使用和擴充。將 MySQL 與 PHP 結合使用,還可以確保您的應用程式能夠有效率地處理資料儲存。

本部落格文章將逐步解說如何使用 OOPMySQL 建立 PHP CRUD 應用程式。我們將遵循最佳實踐和設計模式來組織程式碼,使其既適合初學者,又足夠強大,可以用於更大的專案。

閱讀完本指南後,您將掌握使用 PHP 中的 OOP 原則處理資料庫的堅實基礎。

目錄

  1. OOP 在 PHP 中的重要性
  2. 項目設定
  3. 建立資料庫
  4. 資料夾結構
  5. 連接資料庫
  6. 建立 CRUD 操作
    • 建立
    • 讀取
    • 更新
    • 刪除
  7. 總結

1. OOP 在 PHP 中的重要性

物件導向程式設計 (OOP) 是一種程式設計範式,它使用「物件」來組織程式碼。在 PHP 中,OOP 可讓您建立表示現實世界實體的類,使您的程式碼更模組化、更易於重複使用和管理。

在處理資料庫時,應用 OOP 原則意味著:

  • 關注點分離: 資料庫邏輯封裝在一個類別中,與應用程式的其餘邏輯分開。
  • 可重複使用性: 您可以在應用程式的多個部分重複使用資料庫類別。
  • 可維護性: 隨著應用程式的成長,您的程式碼更容易更新和擴展。

2. 項目設定

在開始編碼之前,讓我們先設定一個易於維護的資料夾結構。您的專案應如下整理:

<code>php-crud/
├── config/
│   └── Database.php
├── controllers/
│   └── UserController.php
├── models/
│   └── User.php
├── views/
│   └── user_list.php
├── public/
│   └── index.php
└── .gitignore</code>
  • config/Database.php: 包含資料庫連線邏輯。
  • controllers/UserController.php: 處理 CRUD 操作並與模型通訊。
  • models/User.php: 包含與 MySQL 中的 users 表互動的邏輯。
  • views/user_list.php: 以表格形式顯示使用者資料。
  • public/index.php: 應用程式的入口點。

3. 建立資料庫

讓我們從在 MySQL 中建立資料庫和 users 表開始。您可以執行以下 SQL 查詢來設定資料庫:

<code class="language-sql">CREATE DATABASE php_crud;

USE php_crud;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);</code>

此表將儲存基本使用者訊息,例如姓名、電子郵件和建立日期。

4. 資料夾結構

我們已經設定了基本資料夾結構。以下是每個資料夾用途的細分:

  • config/: 包含資料庫設定和連線邏輯。
  • controllers/: 處理請求並呼叫模型中的對應方法。
  • models/: 表示業務邏輯和資料庫互動。
  • views/: 向使用者顯示資料。
  • public/: 公用資料夾包含 index.php 文件,該文件將作為應用程式的入口點。

5. 連結資料庫

讓我們從在 config/Database.php 建立一個資料庫連線類別開始:

<code>php-crud/
├── config/
│   └── Database.php
├── controllers/
│   └── UserController.php
├── models/
│   └── User.php
├── views/
│   └── user_list.php
├── public/
│   └── index.php
└── .gitignore</code>

此類建立與 MySQL 的 PDO 連接,並在您的專案中可重複使用。

6. 建立 CRUD 操作

讓我們建立一個用於處理使用者資料的模型。此類別將與 users 表互動並執行 CRUD 操作。

建立模型 (User.php)

<code class="language-sql">CREATE DATABASE php_crud;

USE php_crud;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);</code>

建立控制器 (UserController.php)

<code class="language-php"><?php namespace Config;

use PDO;

class Database
{
    private $host = '127.0.0.1';
    private $dbName = 'php_crud';
    private $username = 'root';
    private $password = '';
    private $connection;

    public function connect()
    {
        try {
            $this->connection = new PDO(
                "mysql:host={$this->host};dbname={$this->dbName}",
                $this->username,
                $this->password
            );
            $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            return $this->connection;
        } catch (PDOException $e) {
            die("Database connection failed: " . $e->getMessage());
        }
    }
}</code>

建立視圖 (user_list.php)

<code class="language-php"><?php namespace Models;

use Config\Database;

class User
{
    private $conn;

    public function __construct()
    {
        $database = new Database();
        $this->conn = $database->connect();
    }

    public function create($name, $email)
    {
        $sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
        $stmt = $this->conn->prepare($sql);
        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':email', $email);
        return $stmt->execute();
    }

    public function read()
    {
        $sql = "SELECT * FROM users";
        $stmt = $this->conn->prepare($sql);
        $stmt->execute();
        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
    }

    public function update($id, $name, $email)
    {
        $sql = "UPDATE users SET name = :name, email = :email WHERE id = :id";
        $stmt = $this->conn->prepare($sql);
        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':email', $email);
        $stmt->bindParam(':id', $id);
        return $stmt->execute();
    }

    public function delete($id)
    {
        $sql = "DELETE FROM users WHERE id = :id";
        $stmt = $this->conn->prepare($sql);
        $stmt->bindParam(':id', $id);
        return $stmt->execute();
    }
}</code>

建立入口點 (index.php)

<code class="language-php"><?php namespace Controllers;

use Models\User;

class UserController
{
    public function createUser($name, $email)
    {
        $user = new User();
        return $user->create($name, $email);
    }

    public function getUsers()
    {
        $user = new User();
        return $user->read();
    }

    public function updateUser($id, $name, $email)
    {
        $user = new User();
        return $user->update($id, $name, $email);
    }

    public function deleteUser($id)
    {
        $user = new User();
        return $user->delete($id);
    }
}</code>

總結

透過遵循 OOP 原則並在 PHP 中應用最佳實踐,我們建立了一個簡單且可擴展的 CRUD 應用程式。這種方法使您可以輕鬆地使用新功能擴展項目或改進資料庫互動。

在本指南中,我們介紹了:

  • 簡單且易於維護的資料夾結構。
  • 用於 MySQL 連線的可重複使用 Database 類別。
  • 封裝所有 CRUD 操作的 User 模型。
  • 用於處理業務邏輯的 UserController。

這種結構使您的 PHP 應用程式更簡潔、更模組化且更易於擴展。現在您可以使用這種方法建立更大、更複雜的應用程序,使用 OOP 和 MySQL。

祝您編碼愉快! ?

以上是使用 OOP 和 MySQL 建立 PHP CRUD 應用程式:最佳實務指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn