PHP helpers to access objects and its collections in database
Warning! This project is currently in deep private beta. Please do not use it if you care about anything good.
- Add this package as a Composer dependency:
composer require getrix/objectmodel
- Define a database callback. This is a callback function stored in a static
property
$databaseCallback
ofObjectModel
class that should return an PDO object with link to database.
use Getrix\ObjectModel;
Getrix\ObjectModel::setDB(
new PDO("mysql:dbname=bbass;host=localhost", "user", "password"
);
final class Post extends Getrix\ObjectModel {
protected static $table = 'Posts';
protected static $primaryKey = 'id';
public function __construct(array $row = null) {
parent::__construct(self::$table, self::$primaryKey,
[
"id" => [
"type" => "integer"
],
"title" => [
"type" => "string"
],
"text" => [
"type" => "string"
]
], $row );
}
}
$post = Post::getById(1);
var_dump($post);
Any object handled with ObjectModel should have a schema that describes validation and transformation rules for each of data field in database. Schema should be defined in object constructor, for ex.:
[
"id" => [
"type" => "integer"
],
"title" => [
"type" => "string"
],
"text" => [
"type" => "string"
]
]
Property | Description | Values | Default |
---|---|---|---|
type |
Type of field | See “Schema field types” below | string |
required |
Is this field is required or not | true or false |
false |
default |
Default value for the field that will be set in case of field value is null | any | - |
fn |
Field validator/transformation callback function. Will be used instead of default type validation rules | function( ObjectField $schema, mixed $value, boolean $reverse) |
- |
populate |
Used to define population class name | See “Populating field values” below | - |
Type | Description | Direct action (from DB) | Reverse action (to DB) |
---|---|---|---|
string |
Plain string | Applies stripslashes default PHP function after the htmlspecialchars_decode |
Applies addslashes after htmlspecialchars |
integer |
Number | ||
associative |
Associative array | Translates stored value to corresponding value in values field property by its key |
Stores key value of corresponding entry in values associative array of the field |
Released 17th November, 2018
- IMPROVEMENT Implemented custom field types base class (
ObjectFieldType
), - IMPROVEMENT Implemented
extractField
method for collections. - TINY CHANGE Moved all exception files to
src/exceptions
directory.
Released 7th October, 2018
-
FIX Improved doc comments to be more recognizable by various IDEs.
-
IMPROVEMENT Added "associative" type of
ObjectField
(see "Schema field types").
Released 26th August, 2018
-
IMPROVEMENT Lots of code refactoring and humanizations
-
IMPROVEMENT
ObjectCollection.php
has been heavily refactored. -
FIX No more bug with
is_subclass_of
check inObjectCollection::fromArray
static method. -
NEW Introduced the
ObjectModelException.php
with exception class that is used from now in whole library context.
Released 10th August, 2018
-
FIX Fixed bug with
ObjectModel->getById()
method related to name of primary key field. -
FIX Fixed bug with
ObjectModel->getById()
method related to unusedorderBy
argument (because of method is designed for only one item to be returned) -
IMPROVEMENT Documented all the methods in
ObjectModel.php
-
IMPROVEMENT Rewritten
ObjectModel::getOne
method that now based on commonly usedObjectModel::simpleQuery
method. Usage ofgetOne
method is not changed. -
IMPROVEMENT Cleaned up the code in
ObjectModel.php
Released 9th August, 2018
-
UPDATE Separated default and
string
field validation type -
IMPROVEMENT Updated and improved readme
-
IMPROVEMENT Updated
ObjectModel->toArray()
: added internal collections serialization flag -
BREAKING Changed logic of providing the database connection: now you should use
ObjectModel::setDB
method.
Released 9th August, 2018
- Initial release