Home > Article > Backend Development > 关于propel--PHP
我不知道有谁用过propel做过ORM,propel 效率还行,写起来像这样:
1. $author = new Author();
2. $author->setFirstName('Jane');
3. $author->setLastName('Austen');
4. $author->save();
这里的anthor 是author表对应的类,2,3,4非常清晰明白,firstname,和lastname是表中的字段名.这样用起来很方便.我看了一下它的model,把表中的字段映射成类和方法,写了六七个文件.但是我想,如果用rails 中的方法,未必要这么麻烦.ruby 的元编程中有一个method_missing,php模仿它弄了一个__call 函数.这两个函数一样的意思,就是说:假如我调用了一个不存在的方法,这个函数将会处理.
所以,我们就可以仿照rails,比如说,我虽然没有像propel那样写一堆文件去映射,但是我照样可以像propel那样写:
我可以写: $author->setFirstName('Jane');
可能你会问: 你根本就没有定义这个function,怎么用呢?答案是可以用_call 把函数名和参数都接过来,然后解析一下,就好象真的存在这样的函数了,rubyonrails 就是这么干的.结果我想用一个文件就够了.