vitexsoftware/ease-fluentpdo
Composer 安装命令:
composer require vitexsoftware/ease-fluentpdo
包简介
SQL/PDO support for Ease Framework based on FluentPDO
README 文档
README
SQL/PDO Support for EasePHP Framework using FluentPDO
Overview
This library provides SQL database support for the EasePHP Framework using FluentPDO for fluent SQL query building. It bridges the gap between Ease Framework's object-oriented approach and modern database operations.
Features
- Multi-database Support: MySQL, PostgreSQL, SQLite, SQL Server
- Fluent Query Builder: Intuitive SQL query construction
- ORM Capabilities: Object-relational mapping with the Ease Framework
- Connection Management: Persistent and non-persistent connections
- Debug Support: SQL query logging and debugging
- Migration Support: Database schema versioning with Phinx
- Logging Integration: Built-in SQL logging capabilities
Key Components
\Ease\SQL\Engine- Main database engine with FluentPDO integration\Ease\SQL\PDO- Enhanced PDO wrapper\Ease\SQL\Orm- Object-relational mapping base class\Ease\SQL\SQL- Abstract SQL operations class\Ease\Logger\LogToSQL- Database logging functionality
Quick Start
<?php require_once 'vendor/autoload.php'; // Configure database connection define('DB_TYPE', 'mysql'); define('DB_HOST', 'localhost'); define('DB_DATABASE', 'myapp'); define('DB_USERNAME', 'user'); define('DB_PASSWORD', 'password'); // Create a database-backed object class User extends \Ease\SQL\Engine { public function __construct($identifier = null) { $this->myTable = 'users'; $this->keyColumn = 'id'; parent::__construct($identifier); } } // Usage example $user = new User(); $user->setDataValue('name', 'John Doe'); $user->setDataValue('email', 'john@example.com'); $user->save(); // Inserts or updates the record
Installation
Download https://github.com/VitexSoftware/php-ease-fluentpdo/archive/master.zip or use
Composer
composer require vitexsoftware/ease-fluentpdo
Linux
For Debian, Ubuntu & friends please use repo:
echo "deb http://repo.vitexsoftware.com $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/vitexsoftware.list sudo wget -O /etc/apt/trusted.gpg.d/vitexsoftware.gpg http://repo.vitexsoftware.com/keyring.gpg sudo apt update sudo apt install php-vitexsoftware-ease-fluentpdo
In this case please add this to your app composer.json:
"require": { "deb/ease-fluentpdo": "*" }, "repositories": [ { "type": "path", "url": "/usr/share/php/EaseSQL", "options": { "symlink": true } } ]
Configuration
Environment Constants
The library uses these environment constants for database configuration:
| Constant | Description | Default | Example |
|---|---|---|---|
DB_TYPE |
Database type | - | mysql, pgsql, sqlite, sqlsrv |
DB_HOST |
Database host | localhost |
127.0.0.1, db.example.com |
DB_PORT |
Database port | - | 3306, 5432 |
DB_DATABASE |
Database name/schema | - | myapp, production_db |
DB_USERNAME |
Database user | - | dbuser, app_user |
DB_PASSWORD |
Database password | - | secret123 |
DB_SETUP |
Setup commands after connect | - | SET NAMES utf8 |
DB_PERSISTENT |
Use persistent connections | 1 |
0 (disable), 1 (enable) |
DB_SETTINGS |
PDO connection settings | - | JSON string of PDO options |
DB_DEBUG |
Enable SQL query logging | false |
true, false |
Configuration Examples
MySQL Configuration
define('DB_TYPE', 'mysql'); define('DB_HOST', 'localhost'); define('DB_PORT', '3306'); define('DB_DATABASE', 'myapp'); define('DB_USERNAME', 'dbuser'); define('DB_PASSWORD', 'password'); define('DB_SETUP', 'SET NAMES utf8mb4');
PostgreSQL Configuration
define('DB_TYPE', 'pgsql'); define('DB_HOST', 'localhost'); define('DB_PORT', '5432'); define('DB_DATABASE', 'myapp'); define('DB_USERNAME', 'postgres'); define('DB_PASSWORD', 'password');
SQLite Configuration
define('DB_TYPE', 'sqlite'); define('DB_DATABASE', '/path/to/database.sqlite');
Usage Examples
Basic ORM Operations
// Create a model class class Article extends \Ease\SQL\Engine { public function __construct($identifier = null) { $this->myTable = 'articles'; $this->keyColumn = 'id'; parent::__construct($identifier); } } // Create new record $article = new Article(); $article->setDataValue('title', 'My First Article'); $article->setDataValue('content', 'This is the content...'); $article->setDataValue('author_id', 1); $savedId = $article->save(); // Load existing record $article = new Article(1); echo $article->getDataValue('title'); // Update record $article->setDataValue('title', 'Updated Title'); $article->save(); // Delete record $article->delete();
FluentPDO Query Builder
$engine = new \Ease\SQL\Engine(); // Select with conditions $users = $engine->listingQuery() ->from('users') ->where('active = ?', 1) ->where('created_at > ?', '2023-01-01') ->orderBy('name ASC') ->fetchAll(); // Complex joins $articles = $engine->listingQuery() ->from('articles a') ->leftJoin('users u ON a.author_id = u.id') ->select('a.*, u.name as author_name') ->where('a.published = ?', 1) ->fetchAll();
Logging to Database
// Configure SQL logging define('DB_DEBUG', true); // Log messages to database $logger = new \Ease\Logger\LogToSQL(); $logger->addToLog('Application started', 'info'); $logger->addToLog('User login failed', 'warning', ['user_id' => 123]);
Development & Testing
Prerequisites
- PHP 7.4 or higher
- Composer
- Database server (MySQL, PostgreSQL, SQLite, or SQL Server)
Setup Development Environment
# Clone repository git clone https://github.com/VitexSoftware/php-ease-fluentpdo.git cd php-vitexsoftware-ease-fluentpdo # Install dependencies composer install # Copy environment configuration cp tests/.env.example tests/.env # Edit tests/.env with your database credentials
Database Setup for Testing
MySQL
mysqladmin -u root -p create easetest
mysql -u root -p -e "GRANT ALL PRIVILEGES ON easetest.* TO easetest@localhost IDENTIFIED BY 'easetest'"
PostgreSQL
sudo -u postgres createuser --createdb --password easetest sudo -u postgres createdb -O easetest easetest
Run Migrations
cd tests
../vendor/bin/phinx migrate
../vendor/bin/phinx seed:run
Running Tests
# Run all tests make phpunit # Or run directly with PHPUnit ./vendor/bin/phpunit --bootstrap ./tests/bootstrap.php --configuration ./phpunit.xml # Run specific test ./vendor/bin/phpunit tests/src/Ease/SQL/EngineTest.php
Code Quality
# Static analysis make static-code-analysis # Code style fixes make cs # Run all quality checks composer test
Building & Packaging
Debian Package
# Build Debian package make deb # or dpkg-buildpackage -b -uc
Composer Package
# Validate composer.json composer validate # Update dependencies composer update # Create optimized autoloader composer dump-autoload --optimize
API Reference
Core Classes
\Ease\SQL\Engine
Main database engine class providing ORM functionality.
Key Methods:
save()- Insert or update recordload($id)- Load record by IDdelete()- Delete current recordlistingQuery()- Get FluentPDO query buildersetDataValue($key, $value)- Set field valuegetDataValue($key)- Get field value
\Ease\SQL\PDO
Enhanced PDO wrapper with additional functionality.
\Ease\SQL\Orm
Base ORM class for database-backed objects.
\Ease\Logger\LogToSQL
Database logging implementation.
Methods:
addToLog($message, $type, $data)- Add log entrygetLogLevel()- Get current log levelsetLogLevel($level)- Set log level
Migration Support
The library includes support for database migrations using Phinx:
# Create new migration make newmigration # Run migrations make migration # Create seed make newseed # Run seeds make seed
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
make phpunit) - Run code quality checks (
make cs && make static-code-analysis) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Requirements
- PHP: >= 7.4
- Extensions: PDO with appropriate database drivers
- Dependencies:
vitexsoftware/ease-core: >= 1.49.0fpdo/fluentpdo: >= 2.2.4
License
This project is licensed under the MIT License - see the LICENSE file for details.
Links & Resources
- Homepage: https://www.vitexsoftware.cz/ease.php
- GitHub: https://github.com/VitexSoftware/php-ease-fluentpdo
- Packagist: https://packagist.org/packages/vitexsoftware/ease-fluentpdo
- Documentation: https://github.com/VitexSoftware/php-ease-fluentpdo/wiki
- Issue Tracker: https://github.com/VitexSoftware/php-ease-fluentpdo/issues
- EasePHP Core: https://github.com/VitexSoftware/php-ease-core
- FluentPDO: https://github.com/fpdo/fluentpdo
Support
For support and questions:
- Create an issue
- Contact: info@vitexsoftware.cz
- Visit: https://www.vitexsoftware.cz
vitexsoftware/ease-fluentpdo 适用场景与选型建议
vitexsoftware/ease-fluentpdo 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.33k 次下载、GitHub Stars 达 5, 最近一次更新时间为 2019 年 08 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 vitexsoftware/ease-fluentpdo 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 vitexsoftware/ease-fluentpdo 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 2.33k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 5
- 点击次数: 7
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-08-02