"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
CruditeException
extends \Exception
and is thrown by all Crudites components
The Source object stores and validates a DSN (Data Source Name)
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
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_
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()
When instantiated, the object provides two methods:
DSN()
, returns the DSN string (string)name()
, returns the database name (string)
The Connection object relies on PDO to connect to a database.
It is created using
- a DSN string
- a username (optional)
- a password (optional)
- a list of driver options (optional)
The DSN string is validated using the Source object, and may throw CruditesException
A PDO object is created and may throw a 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
The PDO::ATTR_ERRMODE is the only option that cannot be overridden
The object stores:
- a Source object;
- a database name (string)
- a PDO object
When instantiated, the object provides the following methods:
- useDatabase(string name)
- driverName()
- databaseName()
- prepare(string statement)
- query()
- alter()
- lastInsertId(string name)
- errorInfo()
- errorCode()
- transact()
- commit()
- rollback()
The object represent a SQL database, handles connection and introspection.
Introspection is a two step process:
- The
INFORMATION_SCHEMA
is 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
It is created using a Connection
object. The connection is stored and the database instrospection is executed.
Connection
object- Table cache (array)
- List of foreign keys, indexed by table (array)
- List of unique constraints, indexed by table (array)
When instantiated, the object provides the following methods:
- name(), returns the database name
- connection(), returns the
Connection
object - inspect(string table_name), return a Table object