我正在尝试创建一个用于 Mojolicious Web 应用程序的小型 ORM 库。我已经非常喜欢 Ruby 的 Datamapper 库,如果可能的话,我想模仿它的一些行为。
在 Datamapper 中,您可以混合 Resource,然后将方法添加到您的类中,例如“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 中的元编程示例,但没有发现任何立即有用的东西。
我所追求的是以下内容:
- 以更惯用的方式实现类似优雅的替代 perl 模式
- 能够在包级别以及对象级别继承子例程
- 能够在当前包的范围内执行“使用”代码,或
- 将当前包传递给在“使用”时执行的代码
- Perl 元编程指南
- 一个现有的声明式 ORM 库,支持轻松创建模拟适配器以及 DB2 和 MySQL
理想情况下,我想尽可能避免在大字符串上运行 eval 。
任何帮助将不胜感激 :-)