ecsco/ormbase

ORM 基础库

v0.9.5.1 2015-01-06 00:00 UTC

README

关于

ORMBASE 是一个易于使用的 PSR-4 兼容的 PHP 类集合。它专为基于 ORM 的项目设计,附带一些示例、缓存以及提供对 Mysql 和 MongoDB 访问的数据库抽象层。

安装

Composer

通过命令行

composer require ecsco/ormbase:dev-master

在你的 composer.json

{
    "require": {
        "ecsco/ormbase": "dev-master"
    }
}

基本用法

<?php

require 'vendor/autoload.php';

/** Init config **/
$config = \ecsco\ormbase\config\Config::getInstance();

$config->addItem('database', 'server', 'localhost');
$config->addItem('database', 'port', '3306');
$config->addItem('database', 'username', 'my_user');
$config->addItem('database', 'password', 'my_pass');
$config->addItem('database', 'dbname', 'server_v4');
$config->addItem('database', 'databaseclass', '\ecsco\ormbase\database\mysql\Database');
$config->addItem('database', 'debugsql', '1');

/** If memcached available **/
$config->addItem('cache', 'cacheclass', '\ecsco\ormbase\cache\memcached\Cache');
$config->addItem('cache', 'server', '127.0.0.1');
$config->addItem('cache', 'port', '11211');

class TableNameContainer extends \ecsco\ormbase\AbstractContainer {

    const OBJECT_NAME = 'TableClassName';
    const TABLE_NAME  = TableClassName::TABLE_NAME;
    
    protected      $basicFields = [ 'id' ];
     
    use \ecsco\ormbase\traits\SingletonTrait;
     
    public function createNew(  ): ecsco\ormbase\AbstractObject {
        $obj = parent::createNew();
        /** more code **/
        return $obj;
    }
    
    public function getTableNameByID( $id, \ecsco\ormbase\database\FieldSelection $selector = null ) {
        $sql = $this->getDatabase()->select( $selector )->from( self::TABLE_NAME )->where( 'id', '=', (int)$id )->limit( 1 );
        $params = $sql->getQueryParams();
     
        /** make ONE object **/
        $result = $this->makePreparedObject( $sql, self::OBJECT_NAME, ...$params );
     
        return $result;
   }
}

class TableClassName extends \ecsco\ormbase\AbstractObject implements \ecsco\ormbase\CachableInterface {
    
    const TABLE_NAME     = 'TableName';
    
    protected $primaryKeys = [ 'id' ];
    protected $hiddenFields = [ ];
    
    public static function getCacheIdentifier(): string {
        return 'cacheNameForThisEntity';
    }
}

/** Clear first. Just for demonstrating how to get a database-connection **/
$db = \ecsco\ormbase\database\DatabaseAccess::getDatabaseInstance( $config );
$db->query ( $db->delete()->from( \Customer::TABLE_NAME ) );

/** Get the container **/
$cc = TableNameContainer::getInstance();

/** Create a new object based on the table **/
$newEntity = $cc->createNew();
$newEntity->setValue('keyname1', 'value1');
$newEntity->setValue('keyname2', 'value2');
/** .... */
$newEntity->store();

/** Get one object (aka row) with id 1 **/
$entityWithIDOne = $cc->getTableNameByID( 1 ); 
$entityWithIDOne->setValue('key_name_in_table1', 'foobar');
$entityWithIDOne->store();

print_r( $entityWithIDOne->toArray() );

/** ... **/

为什么使用 ORMBASE?

很简单,易于使用且功能强大,组件丰富。

谁使用 ORMBASE?

我自己 ;-)

许可证

专有

版权 (c) 2015 Christian Senkowski cs@e-cs.co

您只能将这些类用于测试和个人用途。

软件按“原样”提供,不提供任何形式的质量保证,无论是明示的、暗示的还是其他的,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论这些索赔、损害或其他责任是由于合同、侵权或其他原因引起的,并且与软件的使用或其他方式有关。