ecsco / ormbase
v0.9.5.1
2015-01-06 00:00 UTC
Requires
- php: >=7.0
- phpmd/phpmd: 2.1.3
Requires (Dev)
- phpunit/phpunit: 5.1.*
Suggests
- ext-memcached: Allows you to cache entities when implementing iCachable
This package is not auto-updated.
Last update: 2024-09-28 16:20:40 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
您只能将这些类用于测试和个人用途。
软件按“原样”提供,不提供任何形式的质量保证,无论是明示的、暗示的还是其他的,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论这些索赔、损害或其他责任是由于合同、侵权或其他原因引起的,并且与软件的使用或其他方式有关。