Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hexmakina/crudites
Another PHP/xxSQL abstraction layer
https://github.com/hexmakina/crudites
crud crud-operation introspection-query mariadb mariadb-database mysql mysql-database php php7 sql
Last synced: about 1 month ago
JSON representation
Another PHP/xxSQL abstraction layer
- Host: GitHub
- URL: https://github.com/hexmakina/crudites
- Owner: HexMakina
- License: mit
- Created: 2021-05-14T11:07:35.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-08-30T15:14:49.000Z (3 months ago)
- Last Synced: 2024-10-15T01:03:31.580Z (about 1 month ago)
- Topics: crud, crud-operation, introspection-query, mariadb, mariadb-database, mysql, mysql-database, php, php7, sql
- Language: PHP
- Homepage:
- Size: 483 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/HexMakina/Crudites/badges/quality-score.png?b=main)](https://scrutinizer-ci.com/g/HexMakina/Crudites/?branch=main)
[![License](http://poser.pugx.org/hexmakina/crudites/license)](https://packagist.org/packages/hexmakina/crudites)
[![Latest Stable Version](http://poser.pugx.org/hexmakina/crudites/v)](https://packagist.org/packages/hexmakina/crudites)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/HexMakina/Crudites/badges/quality-score.png?b=main)](https://scrutinizer-ci.com/g/HexMakina/Crudites/?branch=main)# Crudités ?
_"Crudités, it's a cup of carrots sticks"_
**C**reate - **R**etrieve - **U**pdate - **D**elete - **I**ntrospection, **T**ransaction, **E**rrors & **S**chema
```
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
1. The DSN string (constructor parameter)
2. 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:
1. `DSN()`, returns the DSN string (string)
2. `name()`, returns the database name (string)# Connection
The Connection object relies on PDO to connect to a database.## Instantiation
It is created using
1. a DSN string
2. a username (optional)
3. a password (optional)
4. 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:
1. a Source object;
2. a database name (string)
3. 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:
1. The `INFORMATION_SCHEMA` is queried and FK and UNIQUE constraints are stored in the object properties upon instantiation
2. 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