当前位置:首页 > PHP

php实现orm

2026-01-29 00:36:52PHP

PHP 实现 ORM 的方法

ORM(Object-Relational Mapping)是将数据库表映射为对象的技术,简化数据库操作。以下是几种 PHP 实现 ORM 的方式:

使用现有 ORM 框架

成熟的 ORM 框架提供完整功能,如 Doctrine 或 Eloquent(Laravel 内置)。以下是 Doctrine 的简单示例:

// 定义实体类
use Doctrine\ORM\Mapping as ORM;

/
 * @ORM\Entity
 * @ORM\Table(name="users")
 */
class User {
    /
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /
     * @ORM\Column(type="string")
     */
    private $name;
}

// 使用
$entityManager->persist($user);
$entityManager->flush();

手动实现简单 ORM

对于轻量需求,可以手动封装数据库操作:

class BaseModel {
    protected $table;
    protected $db;

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

    public function find($id) {
        $stmt = $this->db->prepare("SELECT * FROM {$this->table} WHERE id = ?");
        $stmt->execute([$id]);
        return $stmt->fetch(PDO::FETCH_OBJ);
    }
}

class User extends BaseModel {
    protected $table = 'users';
}

使用 PDO 扩展

PDO 提供数据库抽象层,适合基础 ORM 功能:

class User {
    public static function getById($id) {
        $pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
        $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
        $stmt->execute([$id]);
        return $stmt->fetchObject(__CLASS__);
    }
}

实现 Active Record 模式

Active Record 模式将数据和行为结合:

class User {
    public $id;
    public $name;

    public function save() {
        $pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
        if ($this->id) {
            $stmt = $pdo->prepare("UPDATE users SET name = ? WHERE id = ?");
            $stmt->execute([$this->name, $this->id]);
        } else {
            $stmt = $pdo->prepare("INSERT INTO users (name) VALUES (?)");
            $stmt->execute([$this->name]);
            $this->id = $pdo->lastInsertId();
        }
    }
}

使用 Data Mapper 模式

Data Mapper 分离数据与业务逻辑:

class UserMapper {
    private $pdo;

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

    public function save(User $user) {
        if ($user->getId()) {
            $stmt = $this->pdo->prepare("UPDATE users SET name = ? WHERE id = ?");
            $stmt->execute([$user->getName(), $user->getId()]);
        } else {
            $stmt = $this->pdo->prepare("INSERT INTO users (name) VALUES (?)");
            $stmt->execute([$user->getName()]);
            $user->setId($this->pdo->lastInsertId());
        }
    }
}

选择方案时应考虑项目规模、性能需求和团队熟悉度。成熟框架适合复杂项目,手动实现适合简单需求或学习目的。

php实现orm

标签: phporm
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form actio…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…