troisyaourts / alpha
Alpha 是基于 Doctrine DBAL 构建的 Silex/Flex 微 ORM
v0.5.1
2020-03-12 12:50 UTC
Requires
- php: >=7.0.0
- doctrine/dbal: >=2.4.0
This package is auto-updated.
Last update: 2024-09-12 22:45:19 UTC
README
Alpha ORM 是基于 Doctrine DBAL 构建的微 ORM,专为在 Silex 微框架和 Symfony Flex 应用程序中使用而量身定制。
安装
在您的 composer.json 中,将以下内容添加到要求列表中:
"troisyaourts/alpha": "dev-master"
然后
composer update
在您的典型 "app.php" 中添加以下行:
$app->register(new Provider\DoctrineServiceProvider(), array('db.options' => $config['db.options']));
$app->register(new Alpha\ServiceProvider());
这将使 Alpha 管理器在您的控制器中的 "models" 下可用。Alpha 管理器使用主 $app['db'] 对象。
在 "examples" 目录中提供了使用示例。
要运行一些测试,克隆当前版本并执行:
curl -s http://getcomposer.org/installer | php
php composer.phar install
php examples/test.php
使用方法
类文件
在 "Model" 中创建一个名为 "MyObject.php" 的文件
<?php
namespace Model;
use Alpha\Entity;
use Alpha\Manager;
class MyObject extends Entity
{
const TABLE_NAME = 'myobject';
const PRIMARY = 'prim_id'; //optionnal, default is juste "id"
public function getHelloFoo(){
return "Hello ".$this->foo;
}
public static function getAllBarred(Manager $manager){
$q = $manager->query()
->where('bar = :bar')
->setParameter("bar", 1);
return $manager->fetchAll($q);
}
}
?>
获取新对象
<?php
$myobj = $app['models']('MyObject')->get();
?>
通过主键_id 获取对象
<?php
$myobj = $app['models']('MyObject')->get(12345);
?>
使用定义的静态函数获取对象列表
<?php
$myobj_iterator = $app['models']('MyObject')->getAllBarred();
foreach($myobj_iterator as $prim_id => $obj)
echo $obj->getHelloFoo();
?>
并将新对象追加到列表中
<?php
$lastItem = $app['models']('MyObject')->get(21);
$myobj_iterator->append($lastItem);
echo $myobj_iterator->end()->getHelloFoo();
?>
保存对象
<?php
$myobj = $app['models']('MyObject')->get();
$myobj->bar = 1;
$myobj->save(); //obj didn't exist : INSERT
echo $myobj->id; //you can access to last_insert_id
$myobj->foo = "Toto";
$myobj->save(); //obj existed : UPDATE
?>
历史
该项目始于 2001 年,当时 Matthieu Duclos 决定为一个基于电子邮件的角色扮演游戏 Ys 开发一个网络应用程序。他编写了一些文件,包括后来成为 alpha 类的文件,并将结果称为 aobjet。
后来,他与其他人一起加入,与 Nicolas B. 和 Julien Z. 一起继续开发他的工作。制作了一个新版本,称为 alpha,因为它是我们构建的任何其他网络应用程序的第一块砖。
随着项目的演变,这个版本专门针对在 Silex 微框架中使用的性能进行了优化。