承接 mulertech/database 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

mulertech/database

最新稳定版本:v1.0.0

Composer 安装命令:

composer require mulertech/database

包简介

This package manage database and is composed by orm and dbal components

README 文档

README

Latest Version on Packagist GitHub Tests Action Status GitHub PHPStan Action Status Total Downloads Test Coverage

🌍 Languages: 🇫🇷 Français | 🇬🇧 English

Un package PHP moderne pour la gestion de base de données combinant une couche d'abstraction (DBAL) et un mapping objet-relationnel (ORM) performant. Conçu pour PHP 8.4+ avec un focus sur la simplicité, la performance et la maintenabilité.

📋 Table des Matières

✨ Fonctionnalités

🗄️ ORM Moderne

  • Mapping par attributs PHP 8 (#[MtEntity], #[MtColumn], etc.)
  • Relations complètes (OneToOne, OneToMany, ManyToMany)
  • Entity Manager avec suivi automatique des modifications
  • Repositories personnalisés avec requêtes typées
  • Système d'événements (PrePersist, PostUpdate, etc.)
  • Cache intelligent pour les métadonnées et requêtes

🔧 Query Builder Expressif

  • API fluide pour construire des requêtes complexes
  • Requêtes typées avec autocomplétion IDE
  • Jointures avancées et sous-requêtes
  • Support SQL brut quand nécessaire
  • Optimisation automatique des requêtes

🛠️ Gestion de Schéma

  • Migrations automatiques avec détection des changements
  • Commandes CLI intégrées (migration:run, migration:rollback)
  • Comparaison de schémas et génération de diff
  • Support multi-environnements

🎯 Performance et Fiabilité

  • Lazy loading des relations
  • Connection pooling et gestion des transactions
  • Cache multi-niveaux (métadonnées, requêtes, résultats)
  • Tests complets (100% de couverture)
  • Analyse statique PHPStan niveau 9

🚀 Installation Rapide

Prérequis

  • PHP 8.4+
  • PDO avec driver MySQL/PostgreSQL/SQLite
  • Composer

Installation

composer require mulertech/database "^1.0"

Configuration Minimale

<?php
use MulerTech\Database\Database\Interface\PhpDatabaseManager;
use MulerTech\Database\ORM\EntityManager;
use MulerTech\Database\Mapping\MetadataRegistry;

// Configuration de la base de données
$config = [
    'host' => 'localhost',
    'port' => 3306,
    'database' => 'my_app',
    'username' => 'user',
    'password' => 'password'
];

// Initialisation
$pdm = new PhpDatabaseManager($config);
$metadataRegistry = new MetadataRegistry();
$entityManager = new EntityManager($pdm, $metadataRegistry);

🎯 Premier Exemple

1. Définir une Entité

<?php
use MulerTech\Database\Mapping\Attributes\{MtEntity, MtColumn};
use MulerTech\Database\Mapping\Types\{ColumnType, ColumnKey};

#[MtEntity(tableName: 'users')]
class User
{
    #[MtColumn(
        columnType: ColumnType::INT,
        columnKey: ColumnKey::PRIMARY_KEY,
        extra: 'auto_increment'
    )]
    private ?int $id = null;

    #[MtColumn(columnType: ColumnType::VARCHAR, length: 100)]
    private string $name;

    #[MtColumn(columnType: ColumnType::VARCHAR, length: 255)]
    private string $email;

    #[MtColumn(columnType: ColumnType::DATETIME)]
    private DateTime $createdAt;

    // Getters et Setters...
    public function getId(): ?int { return $this->id; }
    public function getName(): string { return $this->name; }
    public function setName(string $name): void { $this->name = $name; }
    // ...
}

2. Opérations CRUD

// Créer un utilisateur
$user = new User();
$user->setName('John Doe');
$user->setEmail('john@example.com');
$user->setCreatedAt(new DateTime());

$entityManager->persist($user);
$entityManager->flush(); // L'ID est automatiquement assigné

// Rechercher des utilisateurs
$users = $entityManager->getRepository(User::class)->findAll();
$user = $entityManager->getRepository(User::class)->find(1);
$users = $entityManager->getRepository(User::class)->findBy(['name' => 'John']);

// Modifier un utilisateur
$user->setEmail('john.doe@example.com');
$entityManager->flush(); // Modification automatiquement détectée

// Supprimer un utilisateur
$entityManager->remove($user);
$entityManager->flush();

3. Query Builder

$queryBuilder = new QueryBuilder($entityManager->getEmEngine());

// Requête simple
$users = $queryBuilder
    ->select('u.name', 'u.email')
    ->from('users', 'u')
    ->where('u.name', 'LIKE', '%John%')
    ->orderBy('u.createdAt', 'DESC')
    ->limit(10)
    ->getResult();

// Requête avec jointure
$results = $queryBuilder
    ->select('u.name', 'p.title')
    ->from('users', 'u')
    ->join('posts', 'p', 'u.id = p.user_id')
    ->where('p.published', '=', true)
    ->getResult();

4. Migrations

# Générer une migration
./vendor/bin/console migration:generate

# Exécuter les migrations
./vendor/bin/console migration:run

# Rollback
./vendor/bin/console migration:rollback

📚 Documentation

🚀 Démarrage Rapide

🏗️ Concepts Fondamentaux

🎯 Mapping d'Entités

🗄️ Accès aux Données

🛠️ Schéma et Migrations

🧪 Tests et Qualité

Exécuter les Tests

# Tests unitaires
./vendor/bin/phpunit

# Tests avec couverture
XDEBUG_MODE=coverage ./vendor/bin/phpunit --coverage-html coverage

# Analyse statique
./vendor/bin/phpstan analyze

# Style de code
./vendor/bin/php-cs-fixer fix

Métriques de Qualité

  • 100% de couverture de tests
  • PHPStan niveau 9 (analyse statique maximale)
  • PHP CS Fixer (style de code cohérent)
  • Zéro vulnérabilité (audit sécurité automatique)

Environnement Docker

# Démarrer l'environnement de test
./vendor/bin/mtdocker up

# Exécuter les tests dans Docker
./vendor/bin/mtdocker test

# Tests avec couverture
./vendor/bin/mtdocker test-coverage

🤝 Contribution

Guide de Contribution

  1. Fork le repository
  2. Créer une branche feature (git checkout -b feature/ma-fonctionnalite)
  3. Commit les modifications (git commit -am 'Ajouter ma fonctionnalité')
  4. Push vers la branche (git push origin feature/ma-fonctionnalite)
  5. Créer une Pull Request

Standards de Développement

  • PSR-12 pour le style de code
  • PHPStan niveau 9 obligatoire
  • Tests unitaires pour toute nouvelle fonctionnalité
  • Documentation mise à jour

Environnement de Développement

# Cloner le repository
git clone https://github.com/mulertech/database.git
cd database

# Installer les dépendances
composer install

# Configurer l'environnement
cp .env.example .env

# Démarrer Docker (optionnel)
./vendor/bin/mtdocker up

📄 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

🔗 Liens Utiles

🏷️ Versions

  • v1.0.x : Version stable actuelle
  • Voir CHANGELOG.md pour l'historique complet
Développé avec ❤️ par MulerTech

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-08-14