PHP ORM, который не создает бизнес-объекты - PullRequest
0 голосов
/ 20 февраля 2012

Я унаследовал проект среднего размера, к которому я хотел бы добавить ORM.Я проверил все обычные варианты Doctrine, Propel redbean, но все они, похоже, требуют от меня загрязнения бизнес-объектов их конкретными реализациями.Что я действительно хотел бы (не уверен, если это возможно), так это передать свой бизнес-объект с его геттерами и сеттерами и т. Д., Чтобы ORM сохранил значения.Моя главная задача - не привязывать приложение к ORM.

1 Ответ

2 голосов
/ 20 февраля 2012

Рассмотрим Доктрина2 .Он не реализует ActiveRecord (который, я думаю, вы считаете «загрязнением»), а вместо этого - шаблон DataMapper .Вы можете настроить Doctrine, используя аннотации .

<?php
/** @Entity **/
class Post
{
    /** @Id @GeneratedValue @Column(type="integer") **/
    protected $id;
    /** @Column(type="string") **/
    protected $title;
    /** @Column(type="text") **/
    protected $body;
}

И затем

<?php

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

require_once 'Doctrine/Common/ClassLoader.php';

$loader = new \Doctrine\Common\ClassLoader("Doctrine");
$loader->register();

$dbParams = array(
    'driver' => 'pdo_mysql',
    'user' => 'root',
    'password' => '',
    'dbname' => 'tests'
);
$path = 'path/to/entities';
$config = Setup::createAnnotationMetadataConfiguration($path, true);
$entityManager = EntityManager::create($dbParams, $config);
..................
$entityManager->persist($post);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...