hexmakina/crudites

PHP/PDO CRUD

0.0.12 2022-11-10 09:31 UTC

This package is auto-updated.

Last update: 2024-08-30 15:14:52 UTC


README

Scrutinizer Code Quality PHP 7.04 Required License Latest Stable Version Scrutinizer Code Quality

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 是一个 PHP PDO 包装器

异常

CruditeException 扩展 \Exception,并由所有 Crudites 组件抛出

源代码

Source 对象存储并验证 DSN(数据源名称)

实例化

它使用 DSN 字符串创建,构造函数将提取并验证所有所需信息

mysql:host=localhost;dbname=testdb
mysql:host=localhost;port=3307;dbname=testdb

异常

如果找不到数据库的名称或适当的驱动程序,将抛出带有消息 CruditesException

  • _DSN_NO_DBNAME_
  • _DSN_NO_DRIVER_
  • _DSN_UNAVAILABLE_DRIVER_

属性

对象存储

  1. DSN 字符串(构造函数参数)
  2. 数据库名称(从 DSN 字符串中提取)

对象通过调用 \PDO::getAvailableDrivers() 验证驱动程序名称(从 DSN 字符串中提取)

方法

实例化时,对象提供两种方法

  1. DSN(),返回 DSN 字符串(字符串)
  2. name(),返回数据库名称(字符串)

连接

连接对象依赖于 PDO 连接到数据库。

实例化

它使用以下内容创建

  1. 一个 DSN 字符串
  2. 用户名(可选)
  3. 密码(可选)
  4. 一组驱动程序选项(可选)

异常

使用 Source 对象验证 DSN 字符串,并可能抛出 CruditesException。创建 PDO 对象,并可能抛出 PDOException

默认选项

\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

PDO::ATTR_ERRMODE 是唯一不能覆盖的选项

属性

对象存储

  1. 一个 Source 对象;
  2. 一个数据库名称(字符串)
  3. 一个 PDO 对象

方法

实例化时,对象提供以下方法

数据库相关

  • useDatabase(string name)
  • driverName()
  • databaseName()

查询执行

  • prepare(string statement)
  • query()
  • alter()
  • lastInsertId(string name)
  • errorInfo()
  • errorCode()

事务

  • transact()
  • commit()
  • rollback()

数据库

该对象代表一个 SQL 数据库,处理连接和自省。

自省是一个两步过程

  1. 查询 INFORMATION_SCHEMA 并将 FK 和 UNIQUE 约束存储在对象属性中,在实例化时
  2. 表自省,称为检查,在需要时使用 inspect(table_name) 执行,并将结果存储在表缓存属性中。检查使用自省来创建表的完整表示:字段、数据类型、默认值和约束

实例化

它使用 Connection 对象创建。连接被存储,并执行数据库自省。

属性

  • Connection 对象
  • 表缓存(数组)
  • 外键列表,按表索引(数组)
  • 唯一约束列表,按表索引(数组)

方法

实例化时,对象提供以下方法

  • name(),返回数据库名称
  • connection(),返回 Connection 对象
  • inspect(string table_name),返回一个 Table 对象