好吧,我猜你可能会说:不要自己写ORM。就像这位Jimmy Bogard说的:
http://lostechies.com/jimmybogard/2012/07/24/dont-write-your-own-orm/但是我觉得好有意思,于是……我用“不理睬”的解决方案,自己凭借想法实现了个(类似)ORM(的东西)。目前实现的功能比如:
// C
$model = new userModel();
$model->username = 'username';
$model->password = 'password';
$model->insert();
// U
$model = new userModel();
$thing = $model->get(array('userID' => 1)); // R,这里就分出个实例了
$thing->username = 'username';
$thing->password = 'password';
$thing->save();
分实例主要是为了fetch,因为:
$thing = $model->fetch();
foreach($thing AS $user) {
echo $user->username; //只有这样才能实现这样
$user->username = 'new' . $user->username;
$user->save(); // 以及这样
}
// D
$thing->delete();
但是呢,即便是写成这样了(我觉得写的很差),我觉得还差了很多东西。。
这是哪个ORM的代码,我想。。各位看了就明白:
https://github.com/raincious/facula/blob/master/libraries/orm/class.simpleorm.php首先我觉得太浪费内存了,因为fetch每次都会创建一个自己,那么原来的对象就相当于没用了。我想了很久如何复用这个实例,但是怎么都无法满足在一个实例里完成所有get、fetch、save、insert之类的操作。(试过迭代器之类,或者数组ArrayObject,都不完美)
总之就是觉得自己写的不靠谱,脏乱差,于是想求各位有经验的同学来推荐下相关方面的资料(最好是在线的)用来详细了解相关的设计和原理。
谢谢。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/71923
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.