2010-11-13 4 views
2

En bref, un projet de groupe auquel je participe n'est pas autorisé à utiliser des bibliothèques externes pour le projet.Simple ORM (sans bibliothèque externe)

Nous avons écrit un cadre personnalisé à cause de cela, mais nous sommes bloqués à un point. Nous avons besoin d'un simple ORM pour gérer les relations (encore une fois, pas de librairies externes à haute voix telles que Doctrine, Propel, etc), et comment le faire, facilement.

Par exemple, si nous avions un modèle avec ...

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. 

Quelqu'un peut-il nous aider sur un chemin d'y arriver, donc nous pouvons appeler:

$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. 

Ceci est juste une Exemple. Nous voulons juste être en mesure de relier les données facilement, mais nous ne savons pas comment faire cela (code, ou même où nous devrions mettre un tel code (à savoir dans le finder ou le modèle ou?). Veuillez aider :)

+0

De quelle aide avez-vous besoin? Une idée? Ou quelqu'un pour coder tout ce que vous avez mentionné? –

+0

Si quelqu'un se trouve vraiment dans la situation où vous ne pouvez pas utiliser l'infrastructure de base parce qu'il est «externe», je vous suggère de trouver un autre emploi. Êtes-vous censé créer un runtime PHP aussi? Et puis souder votre propre carte mère? –

Répondre

3

Deux ORM simples sont Idiorm et Axiom. Peut-être que vous pouvez prendre un peu d'inspiration là-bas. Mais voir aussi la discussion précédente ici https://stackoverflow.com/questions/185358/simple-php-orm

+0

Ouais c'est ce qui allait avoir à faire. Axiom et Idiorm semblent assez simples pour se mettre en jachère, je devrais commencer par là. Merci! – ABSLife

0

Regardez comment votre bibliothèque ORM préférée a été codée, afin de comprendre comment elle a décidé de structurer le système. Maintenant, écrivez votre propre version de cela.

Il existe de nombreuses nuances dans un système ORM - et de nombreuses décisions de conception - et il ne semble pas probable que quiconque puisse afficher le code ici.

+0

Ouais, en quelque sorte figuré. Juste plus à la recherche d'une poussée dans la bonne direction. Merci :) – ABSLife

1

Vous devez essentiellement implémenter tous les modèles Data Mapper, Active Record et autres connectés avec eux. L'excellent «Patterns of Enterprise Application Architecture» de Martin Fowler serait un bon début. Désolé d'être laconique, mais c'est un grand sujet!

Questions connexes