2017 © Pedro Peláez
 

library persistr

PHP 5.5+ lightweight persistence layer

image

jgswift/persistr

PHP 5.5+ lightweight persistence layer

  • Thursday, January 22, 2015
  • by jgswift
  • Repository
  • 1 Watchers
  • 0 Stars
  • 1 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

persistr

PHP 5.5+ lightweight persistence layer, (*1)

Build Status Scrutinizer Code Quality, (*2)

Installation

Install via composer:, (*3)

php composer.phar require jgswift/persistr:dev-master

Usage

persistr is a lightweight php package which implements a loose persistence layer., (*4)

persistr does not necessarily use annotations or otherwise any kind of model metadata when defining models. However, that does not preclude the inclusion of a formal modeling component, (*5)

Additionally, persistr Models may be solely relied on for any data source transactions. It is typically bad practice to put platform-dependant code in the Persistent interface implementation. Such code is only appropriate on the model itself., (*6)

persistr assumes you know how to interact with your respective data-source and is not a full-on database abstraction layer, (*7)

persistr makes the distinction between persistence implementations for objects based on signature criteria such as the presence of traits, interfaces, or even simply an individual class name alone, (*8)

When persistence is applied to an individual class, all inheriting classes naturally have the same extensions by default, (*9)

The following is a default example with a blank model using an interface/trait pair signature (the interface is the distinct element by default), (*10)

<?php
class MyUser implements persistr\Interfaces\Persistent {
    use persistr\Persistent;

}

$user = new MyUser;

$model = $user->getModel();

$model->bind('foo',function() {
    return 'bar';
});

$value = $user->foo;

var_dump($value); // returns 'bar'

It is not necessary to specify the interface on class above, as the signature is already recognized simply given a trait. Multiple identification techniques are available, namely trait, interface, class., (*11)

Below is an example of setting up a custom class-based persistence interface., (*12)

First we start by defining a model class, input/output filters, and finally register it to the persistence layer., (*13)

// MODEL CLASS
class MyUserModel implements persistr\Interfaces\Model {
    private $className;
    private static $registry;

    function __construct($className) {
        $this->className = $className;
        if(empty(self::$registry)) {
            self::$registry = new persistr\Object\Registry($this,$className);
        }
    }

    public function getClassName() {
        return $this->className;
    }

    public function getRegistry() {
        return self::$registry;
    }

    public function bind($attribute, callable $callable=null) {
        persistr\Object\Binding\Registry::bind(self::$registry->getTypeName(), $attribute, $callable);
        return $this;
    }

    public function bindTo($object,$attribute,callable $callable=null) {
        persistr\Object\Binding\Registry::bindTo($object, $attribute, $callable);
        return $this;
    }
}

// PERSISTENCE REGISTRATION
$persistor = new persistr\Persistor('MyUser');
persistr\Registry::register($persistor);

$model = new MyUserModel('MyUser');

$persistor->getDataSource()->insert('MyUser',$model);

Now when a MyUser object is instantiated, the given MyUserModel model will be used to map the object., (*14)

The Versions

22/01 2015

dev-master

9999999-dev

PHP 5.5+ lightweight persistence layer

  Sources   Download

MIT

The Requires

 

The Development Requires

php trait persistence

02/06 2014

0.1.1

0.1.1.0

PHP 5.5+ lightweight persistence layer

  Sources   Download

MIT

The Requires

 

The Development Requires

php trait persistence