locky42/leopard-doctrine 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

locky42/leopard-doctrine

最新稳定版本:1.1.1

Composer 安装命令:

composer require locky42/leopard-doctrine

包简介

Lightweight PHP framework for working with databases using the Doctrine ORM.

README 文档

README

locky42/leopard-doctrine integrates Doctrine ORM with Leopard events and provides a registry for ResolveTargetEntity mappings.

Features

  • Global wrapper around Doctrine EntityManager (Leopard\Doctrine\EntityManager)
  • ResolveTargetEntityRegistry for interface → implementation mappings
  • Event-based initialization hooks:
    • BeforeInitEventManagerEvent
    • AfterInitEventManagerEvent
    • BeforeInitEntityManagerEvent
    • AfterInitEntityManagerEvent

Installation

composer require locky42/leopard-doctrine

Usage

1) Configure mappings (optional)

Register interface mappings before BeforeInitEntityManagerEvent is dispatched:

use Leopard\Doctrine\ResolveTargetEntityRegistry;
use Leopard\User\Contracts\Models\UserInterface;
use App\Models\User;

ResolveTargetEntityRegistry::addResolveTargetEntity(
    UserInterface::class,
    User::class,
    []
);

2) Initialize Doctrine and Leopard events

use Doctrine\Common\EventManager as DoctrineEventManager;
use Doctrine\DBAL\DriverManager;
use Doctrine\ORM\EntityManager as ORMEntityManager;
use Doctrine\ORM\ORMSetup;
use Leopard\Doctrine\EntityManager;
use Leopard\Doctrine\Events\BeforeInitEntityManagerEvent;
use Leopard\Doctrine\Events\BeforeInitEventManagerEvent;
use Leopard\Doctrine\Events\AfterInitEventManagerEvent;
use Leopard\Events\EventManager as LeopardEventManager;

$config = ORMSetup::createAttributeMetadataConfiguration(
    paths: [__DIR__ . '/src/Models'],
    isDevMode: true
);

LeopardEventManager::doEvent(BeforeInitEventManagerEvent::class);

$eventManager = new DoctrineEventManager();

LeopardEventManager::doEvent(AfterInitEventManagerEvent::class, $eventManager);

$connection = DriverManager::getConnection([
    // driver, host, dbname, user, password...
], null, $eventManager);

LeopardEventManager::doEvent(BeforeInitEntityManagerEvent::class);

// Important: pass the same Doctrine EventManager to ORM EntityManager
$ormEntityManager = new ORMEntityManager($connection, $config, $eventManager);

EntityManager::setEntityManager($ormEntityManager);

3) Retrieve EntityManager anywhere

$em = EntityManager::getEntityManager();

Requirements

  • PHP 8.3+
  • Doctrine ORM 3.x
  • locky42/leopard-events

Notes

  • If you use ResolveTargetEntity, ensure listeners are attached to the same Doctrine EventManager instance that is passed to ORM EntityManager.
  • The package bootstrap auto-registers internal listeners via Composer autoload files.

License

MIT

统计信息

  • 总下载量: 17
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-10-24

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固