我正在尝试创建一个小型ORM库,以便在Mojolicious Web应用程序中使用。我已经非常喜欢Ruby的Datamapper库,如果可能的话,我想模仿它的一些行为。
在Datamapper中你可以混合资源,然后在你的班级中添加方法,例如'all'等:
# User.rb
class User
include Datamapper::Resource;
end
...
# Application.rb
users = User.all
对于我的库,我试图为从模型继承的模块添加一些包级别功能,以实现类似的行为。
从本质上讲,我希望能够做一些近似以下的事情:
# User.pm
package User;
use base Model;
...
# Application.pm
my @users = User::all();
我已经浏览过perl中的元编程示例,但没有发现任何立即有用的内容。
我所追求的是以下内容:
理想情况下,我希望尽可能避免在大字符串上运行eval。
非常感谢任何帮助: - )
答案 0 :(得分:2)
替代perl模式,以更惯用的方式实现类似的优雅
Roles超越mixins。
能够在包级别以及对象级别继承子例程
角色通常在包级别上使用,但使用技巧也只能应用于实例。 ( FIXME 如何?)
能够在当前包的范围内“使用”执行代码
将当前包传递给在'use'
上执行的代码
use
语句中的所有参数都作为参数传递给import
。
Perl中的元编程指南
现有的声明性ORM库,支持轻松创建模拟适配器以及DB2和MySQL