Propel3
Propel3是一款面向现代PHP 7.1+的开源对象关系映射(ORM)。
Propel ORM的版本3取代了 Propel2 ,这不再被维护。 Propel3引入了一个数据映射器实现,它将实体与实际的持久逻辑分开。
状态
目前处于开发中,尚未准备好使用。
特性
- Propel速度非常快
- 具有运行时UnitOfWork的数据映射器,具有大量对象计数的高性能(批量插入/更新)
- 查询-生成器
- 代码生成非常适合IDE
- 生成所有列和关系的方法
- 数据库模式迁移
- 模式逆向工程
- 定制
- Propel带有常见的“行为”
- 完全针对MySQL、PostgreSQL和SQLite进行单元测试。 Oracle和MSSQL是实验性的。
示例
定义实体
XML
<database name="default"> <entity name="Vendor\Car"> <field name="id" primaryKey="true" autoIncrement="true" type="INTEGER" /> <field name="name" type="VARCHAR" required="true" /> <relation target="Publisher" onDelete="setnull"/> <relation target="Author" onDelete="setnull" onUpdate="cascade"/> </entity> </database>
或标注
在开发中。
namespace Vendor use Propel\Annotations\Entity; use Propel\Annotations\Field; use Propel\Annotations\PrimaryKey; /** * @Entity() */ class Car { /** * @PrimaryKey(auto_increment=true) */ private $id; /** * @Field(type="VARCHAR") */ private $name; // getters/setters }
数据映射器
$propel = new Propel\Runtime\Configuration('path/to/propel.yml'); // require a session for each request/workload $session = $propel->getSession(); $car = new Vendor\Car(); $car->setName('Ford'); $session->persist($car); $session->commit();
RAD/Active-record
// use <entity name="Vendor\Car" activeRecord="true"> $car = new Vendor\Car(); $car->setName('Ford'); $car->save();
安装
阅读 Propel文档。该文档仍然适用于Propel2。
贡献
每个人都可以为Propel做出贡献。只需将它分叉,并发送合并请求。 您必须遵循 PSR2 conding标准并尽可能提供单元测试。
请参阅我们的贡献指南。谢谢!
许可证
请参阅 LICENSE 文件。