当前位置:首页 > PHP

php 实现 model层

2026-02-16 01:01:27PHP

在 PHP 中实现 Model 层通常遵循 MVC(Model-View-Controller)架构模式,Model 层负责处理数据逻辑、数据库交互等核心业务。以下是几种常见实现方式:

基础实现(原生 PHP)

使用原生 PHP 实现 Model 层可以通过封装数据库操作完成:

class UserModel {
    private $db;

    public function __construct($db) {
        $this->db = $db;
    }

    public function getUsers() {
        $query = "SELECT * FROM users";
        $stmt = $this->db->prepare($query);
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

    public function createUser($data) {
        $query = "INSERT INTO users (name, email) VALUES (:name, :email)";
        $stmt = $this->db->prepare($query);
        $stmt->bindParam(':name', $data['name']);
        $stmt->bindParam(':email', $data['email']);
        return $stmt->execute();
    }
}

使用 ORM 框架(Eloquent)

Laravel 的 Eloquent ORM 提供了简洁的 Model 层实现:

use Illuminate\Database\Eloquent\Model;

class User extends Model {
    protected $table = 'users';
    protected $fillable = ['name', 'email'];
}

// 使用示例
$user = new User();
$user->name = 'John';
$user->email = 'john@example.com';
$user->save();

抽象基类封装

创建基础 Model 类减少重复代码:

abstract class BaseModel {
    protected $table;
    protected $db;

    public function __construct($db) {
        $this->db = $db;
    }

    public function find($id) {
        $query = "SELECT * FROM {$this->table} WHERE id = :id";
        $stmt = $this->db->prepare($query);
        $stmt->bindParam(':id', $id);
        $stmt->execute();
        return $stmt->fetch(PDO::FETCH_ASSOC);
    }
}

class ProductModel extends BaseModel {
    protected $table = 'products';
}

实现 ActiveRecord 模式

结合数据库操作的 Model 实现:

class ActiveRecordModel {
    private static $db;
    protected static $table;

    public static function setDb($db) {
        self::$db = $db;
    }

    public static function all() {
        $query = "SELECT * FROM " . static::$table;
        $stmt = self::$db->prepare($query);
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
}

class Post extends ActiveRecordModel {
    protected static $table = 'posts';
}

数据映射模式

分离数据库操作与业务逻辑:

class UserDataMapper {
    private $db;

    public function __construct($db) {
        $this->db = $db;
    }

    public function mapToObject(array $data) {
        $user = new User();
        $user->setId($data['id']);
        $user->setName($data['name']);
        return $user;
    }

    public function fetchById($id) {
        $query = "SELECT * FROM users WHERE id = :id";
        $stmt = $this->db->prepare($query);
        $stmt->bindParam(':id', $id);
        $stmt->execute();
        return $this->mapToObject($stmt->fetch(PDO::FETCH_ASSOC));
    }
}

选择实现方式时应考虑项目规模:

php 实现 model层

  • 小型项目适合原生实现或简单 ORM
  • 中型项目建议使用框架提供的 ORM
  • 大型复杂系统可考虑数据映射或领域驱动设计

所有示例均需要提前建立数据库连接并注入到 Model 中。现代 PHP 框架通常已内置更完善的 Model 层解决方案。

标签: phpmodel
分享给朋友:

相关文章

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_I…

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使用…

php 实现md5

php 实现md5

使用 PHP 内置函数实现 MD5 PHP 提供了 md5() 函数,可以直接计算字符串的 MD5 哈希值。该函数接受一个字符串参数,返回 32 字符的十六进制哈希值。 $string = "H…