当前位置:首页 > 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 层实现:

php 实现 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 实现:

php 实现 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));
    }
}

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

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

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

标签: phpmodel
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP实现打印功能的方法 在PHP中实现打印功能可以通过多种方式完成,包括直接输出到浏览器、生成PDF文件、调用打印机接口等。以下是几种常见的方法: 直接输出HTML内容 PHP可以通过echo或p…

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaS…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

基于php的设计与实现

基于php的设计与实现

PHP 设计与实现的关键要素 环境搭建与框架选择 PHP开发需配置服务器环境(如Apache/Nginx)、PHP版本(建议7.4+)及数据库(MySQL/MariaDB)。主流框架包括Laravel…

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart/…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…