quidphp/orm

PHP library that provides database access and a comprehensive ORM

5.31.0 2022-07-02 22:21 UTC

This package is auto-updated.

Last update: 2024-04-11 00:15:52 UTC


README

Release License PHP Version Style CI Code Size

About

QuidPHP/Orm is a PHP library that provides database abstraction using PDO and an easy-to-use Object-Relational Mapper (ORM). It is part of the QuidPHP package and can also be used standalone.

License

QuidPHP/Orm is available as an open-source software under the MIT license.

Documentation

QuidPHP/Orm documentation is available at QuidPHP/Docs.

Installation

QuidPHP/Orm can be easily installed with Composer. It is available on Packagist.

$ composer require quidphp/orm

Once installed, the Quid\Orm namespace will be available within your PHP application.

Requirement

QuidPHP/Orm requires the following:

  • PHP 8.1 with these extensions:
    • PDO
    • pdo_mysql
  • Mysql (>= 8.0) or MariaDB (>= 10.4) database
  • All requirements of quidphp/main

Dependency

QuidPHP/Orm has the following dependency:

  • quidphp/main - Quid\Main - PHP library that provides a set of base objects and collections

The dependency will be resolved by using the Composer installation process.

Comment

QuidPHP/Orm code is commented and all methods are explained (in French).

Convention

QuidPHP/Orm is built on the following conventions:

  • Coding: No curly braces are used in a IF statement if the condition can be resolved in only one statement.
  • Config: A special $config static property exists in all classes. This property gets recursively merged with the parents' property on initialization.
  • Dynamic singleton: Table, Col, Row and Cell objects can only exist once for a same source.
  • Traits: Traits filenames start with an underscore (_).
  • Type: Files, function arguments and return types are strict typed.

Overview

QuidPHP/Orm contains 45 classes and traits. Here is an overview:

  • CatchableException - Class used for a catchable database query exception
  • Cell - Class to represent an existing cell within a row
  • Cells - Class for a collection of many cells within a same row
  • CellsIndex - Class for a collection of cells within different tables (keys are indexed)
  • CellsMap - Root class for a collection of cells
  • Classe - Class required to identify which class needs to be used by the different ORM components
  • Col - Class to represent an existing column within a table
  • ColRelation - Class to access the relation data of a column
  • ColSchema - Class used to parse the information schema of a column
  • Cols - Class for a collection of many columns within a same table
  • ColsIndex - Class for a collection of cols within different tables (keys are indexed)
  • ColsMap - Root class for a collection of cols
  • Db - Class used to query the database and to link the results to the different ORM components
  • Exception - Class used for a database query exception
  • History - Class used to store the history of requests made to the database object
  • Lang - Extended class for an object containing language texts related to the database
    • En - English language content used by this namespace
    • Fr - French language content used by this namespace
  • Map - Root class for a collection of cells, cols or rows
  • Operation - Abstract class used for a complex operation on the database
    • Delete - Class used for a delete operation on a table row
    • Insert - Class used for a insert operation on a table
    • Truncate - Class used for a truncate operation on a table
    • Update - Class used for an update operation on a table row
  • Pdo - Class used to query the database using the PDO object
  • PdoSql - Class used to build an sql query in a object-oriented way, not linked to ORM components
  • Relation - Abstract class that is extended by ColRelation and Relation
  • Row - Class to represent an existing row within a table
  • RowOperation - Abstract class used for a complex operation on a table row
  • Rows - Class for a collection of many rows within a same table
  • RowsIndex - Class for a collection of rows within different tables (keys are indexed)
  • RowsMap - Root class for a collection of rows
  • Schema - Class that provides a schema for a database with tables and columns information
  • Sql - Class used to build a sql query in a object-oriented way, uses the DB class (linked to the ORM components)
  • Syntax - Abstract class with static methods to generate SQL syntax
    • Mysql - Class with static methods to generate MySQL syntax strings (compatible with MySQL and MariaDB)
  • Table - Class to represent an existing table within a database
  • TableClasse - Class required to identify which class needs to be used by the different ORM components of a table
  • TableOperation - Abstract class used for a complex operation on a database table
  • TableRelation - Class to access the relation data of a table
  • Tables - Class for a collection of many tables within a same database
  • _colCell - Trait that provides common methods for Col and Cell objects
  • _dbAccess - Trait that grants database access to the class using
  • _mapIndex - Trait that grants common methods for indexed collections (cols, cells, rows)
  • _tableAccess - Trait that grants table access to the class using

Testing

QuidPHP/Orm contains 26 test classes:

  • CatchableException - Class for testing Quid\Orm\CatchableException
  • Cell - Class for testing Quid\Orm\Cell
  • Cells - Class for testing Quid\Orm\Cells
  • CellsIndex - Class for testing Quid\Orm\CellsIndex
  • Classe - Class for testing Quid\Orm\Classe
  • Col - Class for testing Quid\Orm\Col
  • ColRelation - Class for testing Quid\Orm\ColRelation
  • ColSchema - Class for testing Quid\Orm\ColSchema
  • Cols - Class for testing Quid\Orm\Cols
  • ColsIndex - Class for testing Quid\Orm\ColsIndex
  • Db - Class for testing Quid\Orm\Db
  • Exception - Class for testing Quid\Orm\Exception
  • History - Class for testing Quid\Orm\History
  • Lang - Class for testing Quid\Orm\Lang
  • Pdo - Class for testing Quid\Orm\Pdo
  • PdoSql - Class for testing Quid\Orm\PdoSql
  • Row - Class for testing Quid\Orm\Row
  • Rows - Class for testing Quid\Orm\Rows
  • RowsIndex - Class for testing Quid\Orm\RowsIndex
  • Schema - Class for testing Quid\Orm\Schema
  • Sql - Class for testing Quid\Orm\Sql
  • Syntax - Class for testing Quid\Orm\Syntax
  • Table - Class for testing Quid\Orm\Table
  • TableClasse - Class for testing Quid\Orm\TableClasse
  • TableRelation - Class for testing Quid\Orm\TableRelation
  • Tables - Class for testing Quid\Orm\Tables

QuidPHP/Orm testsuite can be run by creating a new QuidPHP/Assert project.