hexmakina/crudites
Composer 安装命令:
composer require hexmakina/crudites
包简介
PHP/PDO CRUD
关键字:
README 文档
README
Crudités ?
"Crudités, it's a cup of carrots sticks"
Create - Retrieve - Update - Delete - Introspection, Transaction, Errors & Schema
CRUDITES
C CRUD
R Relations
U Uniques as PK
D Disable, Don't Delete
I Introspect & Inspect
T Transactions and Tracking
E Errors
S Security
Crudites is a PHP PDO wrapper
Exception
CruditeException extends \Exception and is thrown by all Crudites components
Source
The Source object stores and validates a DSN (Data Source Name)
Instantiation
It is created using a DSN string, the constructor will extract and validates all the required information
mysql:host=localhost;dbname=testdb
mysql:host=localhost;port=3307;dbname=testdb
Exceptions
If the database's name or a proper driver cannot be found, a CruditesException is thrown with the message
_DSN_NO_DBNAME__DSN_NO_DRIVER__DSN_UNAVAILABLE_DRIVER_
Properties
The object stores
- The DSN string (constructor parameter)
- The database name (extracted from the DSN string)
The object validates the driver's name (extracted from DSN string) by calling \PDO::getAvailableDrivers()
Methods
When instantiated, the object provides two methods:
DSN(), returns the DSN string (string)name(), returns the database name (string)
Connection
The Connection object relies on PDO to connect to a database.
Instantiation
It is created using
- a DSN string
- a username (optional)
- a password (optional)
- a list of driver options (optional)
Exceptions
The DSN string is validated using the Source object, and may throw CruditesException
A PDO object is created and may throw a PDOException
Default Options
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, // the one option you cannot change
\PDO::ATTR_CASE => \PDO::CASE_NATURAL,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC
The PDO::ATTR_ERRMODE is the only option that cannot be overridden
Properties
The object stores:
- a Source object;
- a database name (string)
- a PDO object
Methods
When instantiated, the object provides the following methods:
Database related
- useDatabase(string name)
- driverName()
- databaseName()
Query execution
- prepare(string statement)
- query()
- alter()
- lastInsertId(string name)
- errorInfo()
- errorCode()
Transactions
- transact()
- commit()
- rollback()
Database
The object represent a SQL database, handles connection and introspection.
Introspection is a two step process:
- The
INFORMATION_SCHEMAis queried and FK and UNIQUE constraints are stored in the object properties upon instantiation - The table introspection, called inspection, is executed on demand using
inspect(table_name)and the results are stored in the table cache property. Inspection uses introspection to create a complete representation of a table: fields, data type, defaults & constraints
Instantiation
It is created using a Connection object. The connection is stored and the database instrospection is executed.
Properties
Connectionobject- Table cache (array)
- List of foreign keys, indexed by table (array)
- List of unique constraints, indexed by table (array)
Methods
When instantiated, the object provides the following methods:
- name(), returns the database name
- connection(), returns the
Connectionobject - inspect(string table_name), return a Table object
hexmakina/crudites 适用场景与选型建议
hexmakina/crudites 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 297 次下载、GitHub Stars 达 2, 最近一次更新时间为 2021 年 08 月 11 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「database」 「php」 「mysql」 「pdo」 「crud」 「update」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 hexmakina/crudites 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 hexmakina/crudites 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 hexmakina/crudites 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Dibi is Database Abstraction Library for PHP
Store your language lines in the database, yaml or other sources
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
A PSR-7 compatible library for making CRUD API endpoints
PHP module for MySql database
VV database abstraction layer with query builder and DB structure models
统计信息
- 总下载量: 297
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 8
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: mit
- 更新时间: 2021-08-11