hexmakina / crudites
PHP/PDO CRUD
Installs: 257
Dependents: 3
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 0
Open Issues: 15
Type:package
Requires
- php: >=7.1
- hexmakina/black-box: 0.0.*
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_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
Instantiation
It is created using a Connection
object. The connection is stored and the database instrospection is executed.
Properties
Connection
object- 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
Connection
object - inspect(string table_name), return a Table object