Code Monkey home page Code Monkey logo

unimapper's Issues

computed properties

/**
 * @mapper Mapper(table_name)
 *
 * @property integer $calculatedPrice m:computed
 * @property integer $price           m:map(Mapper:)
 * @property integer $number          m:map(Mapper:)
 */
class MyEntity extends UniMapper\Entity
{

    protected function computeCalculatedPrice()
    {
         return $this->price * $this->number;
    }

}

active entity

Proposal

  • entity keeps all mapper instances and you can call save() or delete() on it
  • queries should make active all returned entities

cached queries

$query->findAll()->cached(true, [ options ])->execute();

read properties

This property can be only read from data source, but ommited in $mapper->unmapEntity()

/\s*\*\s*@property([ -](read|write)*\s*.*)/

reflection refactoring

  • remove entity reflection dependency from property reflection
  • separate part of Property::validateValue()

easier map definition in entity

/**
 * @mapper Name(table)
 *
 * @property integer $id
 * @property string  $description
 */
class MyEntity extends \UniMapper\Entity

associations

M:N - hasMany

/**
 * @property Order[] $order m:assoc(M:N=joinKey|joinResource|referenceKey)
 */
class User extends \UniMapper\Entity {}
class Order extends \UniMapper\Entity {}

1:N - belongsToMany

/**
 * @property Item[] $items m:assoc(1:N=targetKey)
 */
class Order extends \UniMapper\Entity {}
class Item extends \UniMapper\Entity {}

property validators

/**
 * @mapper Mapper(table_name)
 *
 * @property string  $url    m:map(Mapper:) m:validate(url)
 * @property string  $ip     m:map(Mapper:) m:validate(ipv4|ipv6)
 * @property integer $price  m:map(Mapper:)
 * @property integer $number m:map(Mapper:)
 */
class MyEntity extends UniMapper\Entity
{

    public static function validateIpv4()
    {
         return ....;
    }

}

naming conventions

Default masks:

  • repository: MyApp\Model\Repository*Repository
  • entity: MyApp\Model\Entity*

Add orm class wrapper for all repositories.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.