简单的ORM(没有外部库)

时间:2010-11-13 19:33:56

标签: php orm

长话短说,我参与的小组项目不允许使用外部库进行项目。

由于这个原因,我们编写了一个自定义框架,但我们在某个时刻陷入困境。我们需要一个简单的ORM来处理关系(同样,没有外部库,如Doctrine,Propel等),以及如何轻松地执行它。

例如,如果我们有一个带有...的模型

class ProductsModel extends ModelLib {
    $has_many = array( 'Images' ); // Would relate to Images, get all images with this product_
    $has_one = array( 'User' ); // Would relate to the User, get 1 user who uploaded this product.

有人可以帮助我们实现这一目标,所以我们可以致电:

$products = $productsFinder->findAll( ); // returns all product models
foreach( $products AS $product ) {
    print $product->user->name; // gets the user who uploaded the product by relation
    print_r( $prodoct->images ); // returns models of images related to this product.

这只是一个例子。我们几乎只是希望能够轻松地关联数据,但我们不知道如何做到这一点(代码方面,甚至我们应该放置这样的代码(即在查找器或模型中?)。任何人都可以请协助:)

3 个答案:

答案 0 :(得分:3)

两个简单的ORM是Idiorm和Axiom。也许你可以在那里获得一些灵感。但请参阅此前的讨论https://stackoverflow.com/questions/185358/simple-php-orm

答案 1 :(得分:1)

您基本上需要实现所有Data Mapper,Active Record和与之相关的其他模式。 Martin Fowler出色的“企业应用程序架构模式”将是一个良好的开端。很抱歉是简洁的,但这是一个很大的主题!

答案 2 :(得分:0)

了解您最喜欢的ORM库是如何编码的,以便您了解他们如何决定构建系统。现在写下你自己的版本。

ORM系统有许多细微差别 - 以及许多设计决策 - 似乎任何人都不可能在这里发布代码。