j4mie / paris
PHP5的轻量级Active Record实现,基于Idiorm构建
Requires
- php: >=5.2.0
- j4mie/idiorm: 1.5.*
Requires (Dev)
- phpunit/phpunit: ^4.8
README
https://j4mie.github.io/idiormandparis/
仅维护模式
从版本1.5.0开始,Idiorm和Paris被认为功能完善。虽然它们将继续通过修复错误来维护,但从此以后将不再添加新功能。这意味着,如果拉取请求对API进行了破坏性更改,或者需要除了补丁版本号以外的任何更改,则将不会合并。
请勿提交功能请求或API破坏性更改,因为它们将无礼地关闭。
我应该使用Idiorm/Paris吗?
如果你正在启动一个新项目
不建议在新的项目中使用Idiorm或Paris。
我建议你使用来自Laravel的Eloquent数据库库,因为它是在Taylor编写时基于Idiorm构建的。这意味着那里有相同的一些想法,但它得到了更积极的维护,并且有更现代的代码风格。
如果你有基于Idiorm或Paris的现有项目
你可以继续使用这两个项目,因为它们将继续接收安全补丁和错误修复。重要的是要注意,如果它们需要更改而会破坏向后兼容性,则未来的PHP版本可能不支持。
在这种情况下,你可以使用其他数据库库,如上面“如果你正在启动一个新项目”部分中提到的Laravel的Eloquent,或者你可以选择分叉Idiorm和/或Paris以应用自己的修改。
但是,为什么?
有关本项目状态的更多信息,请参阅j4mie/idiorm#360
PHP5的轻量级Active Record实现。
基于Idiorm构建。
在PHP 5.2.0+上测试过 - 可能可以通过PDO和正确的数据库驱动程序在早期版本上运行。
在BSD许可证下发布。
特性
- 极其简单的配置。
- 公开了Idiorm的流畅查询API的全威力。
- 支持关联。
- 简单的机制来封装常见的查询在过滤器方法中。
- 基于PDO。
- 在整个过程中使用预处理语句,以防止SQL注入攻击。
- 数据库无关。目前支持SQLite、MySQL、Firebird和PostgreSQL。可能支持其他数据库,请尝试一下!
- 支持模型集合,并支持方法链来过滤或一次性应用多个结果。
- 支持多个连接
文档
文档托管在Read the Docs上:paris.rtfd.org
构建文档
您需要安装Sphinx,然后在文档文件夹中运行
make html
现在文档将在docs/_build/html/index.html中
让我们看看一些代码
class User extends Model { public function tweets() { return $this->has_many('Tweet'); } } class Tweet extends Model {} $user = Model::factory('User') ->where_equal('username', 'j4mie') ->find_one(); $user->first_name = 'Jamie'; $user->save(); $tweets = $user->tweets()->find_many(); foreach ($tweets as $tweet) { echo $tweet->text; }
变更日志
1.5.6 - 发布于2017-03-21
- 允许在遍历
find_many()
结果时使用 IDE 自动完成功能 [stratoss] - 问题 #128 - 为模型属性记录 @property PHPDoc 注释以支持 IDE 自动完成 [Treffynnon]
1.5.5 - 发布于 2016-12-14
- 修复了未正确生成连接表名的问题 [Ralphunter] - 问题 #109
- 将 phpunit 添加为开发依赖项,并添加 composer 脚本(
composer test
)以轻松运行测试 [Treffynnon] - 全局设置以允许静态请求,避免强制使用命名空间加类作为自动表名 [michaelward82] - 问题 #100
- 记录静态模型调用与 auto_prefix_models 之间的冲突 [michaelward82] - 问题 #102
- 为魔法方法添加 @method 标签 [stellis] - 问题 #104
- 添加缺失的
__unset()
魔法方法 [qyanu] - 问题 #106 - 从 travis-ci 容器中移除 PHP 5.2,以便进行测试(注意 Idiorm 仍然支持 PHP 5.2,尽管如此) [Treffynnon]
1.5.4 - 发布于 2014-09-23
- 修正了 2 个模型函数的 docblock 返回值 [michaelward82] - 问题 #99
1.5.3 - 发布于 2014-06-25
- 移除错误提交的 git 合并备份文件
1.5.2 - 发布于 2014-06-23
1.5.1 - 发布于 2014-06-22
- 由于 HHVM 中存在错误,从 travis-ci 中移除 HHVM 构建目标
1.5.0 - 发布于 2014-06-22
- 允许静态调用模型子类,在生成表名时忽略命名空间信息 [michaelward82] - 问题 #90
- 防止无效方法调用引发无限递归 [michaelward82] - 问题 #75
- 允许
set()
和set_expr()
方法的链式调用 [naga3] - 问题 #94 - 将 HHVM 添加到 travis-ci 构建矩阵中 [ptarjan] - 问题 #81
- 改进连接文档 [rhynodesigns] - 问题 #92
- 改进代码文档块 [michaelward82] - 问题 #91
- 改进代码文档块和空白字符 [michaelward82] - 问题 #93
- 改进连接文档 [kkeiper1103] - 问题 #79
1.4.2 - 发布于 2013-12-12
修复补丁更新以移除损坏的拉取请求 - 可能会影响利用了在 1.4.0 中合并的 "find_many()
现在返回一个以数据库主键为键的关联数组" 变更的 1.4.0 和 1.4.1 的用户。
- 撤销拉取请求/问题 #133,因为它以之前未预料到的方式破坏了向下兼容性(参见 Idiorm 问题 #162、#156 和 #133) - 为将此更改合并到 Paris 致歉 - 关闭 Idiorm 问题 156
1.4.1 - 发布于 2013-09-05
- 将 Idiorm 的 composer.json 要求增量到 1.4.0 [michaelward82] - 问题 #72
1.4.0 - 发布于 2013-09-05
- 直接对模型类调用方法,例如
User::find_many()
- 仅限 PHP 5.3 [Lapayo] - 问题 #62 find_many()
现在返回一个以数据库主键为键的关联数组 [Surt] - 请参阅提交 9ac0ae7 和 Idiorm 问题 #133- 为 Idiorm 添加符合 PSR-1 的 camelCase 方法调用(需要 PHP 5.3+) [crhayes] - 问题 #59
- 允许在关系方法中指定连接 [alexandrusavin] - 问题 #55
- 使 tests/bootstrap.php 与 HHVM 兼容 [JoelMarcey] - 问题 #71
- belongs_to 与 $auto_prefix_models 不兼容 (问题 #70)
1.3.0 - 发布于 2013-01-31
- 文档已移至 paris.rtfd.org,并现在使用 Sphinx 构建
- 添加对多个数据库连接的支持 [tag] - 问题 #15
- 允许为模型类名指定前缀 - 请参阅文档中的配置 - 关闭 问题 #33
- 从 git 导出中排除测试和 git 文件(由 composer 使用)
- 实现
set_expr
- 关闭 问题 #39 - 添加
is_new
- 关闭 问题 #40 - 在 Idiorm 中添加对新 IdiormResultSet 对象的支持 - 关闭 问题 #14
- 将Composer更改为使用classmap,以便更好地支持自动加载 [javierd] - 问题 #44
- 将测试移动到PHPUnit以匹配Idiorm
- 更新测试中包含的Idiorm版本
- 将文档移动到使用Sphinx
1.2.0 - 发布于2012-11-14
- 为通过packagist安装设置composer(j4mie/paris)
- 添加基本命名空间支持,请参阅问题 #20
- 允许在
set()
中将属性设置为关联数组,请参阅问题 #13 - 修复idiorm现在允许保存空模型(j4mie/idiorm,请参阅问题 #58)
1.1.1 - 发布于2011-01-30
- 修复不正确的测试,请参阅问题 #12
1.1.0 - 发布于2011-01-24
- 添加
is_dirty
方法
1.0.0 - 发布于2010-12-01
- 初始发布