59 votos

Redbean vs doctrina

He encontrado RedBean hoy en StackOverflow y me estaba preguntando cuando/si se usa en lugar de la Doctrina.

He leído mucho acerca de la Doctrina y estaba empezando a usarlo. Incluso si se está trabajando ahora creo que no es muy fácil para empezar. Si comparamos la documentación (por la Doctrina y RedBean) preferiría RedBean porque es muy fácil de entender, con ejemplos sencillos. Sin intentar puedo ver será en marcha y funcionando en 5 minutos.

Supongo que el lado de abajo de RedBean se mostrará más adelante. La doctrina se parece a un buen desarrollo de la herramienta, parece más que probado, y se siente como la elección más segura. Estoy seguro de que no hay una respuesta fácil, pero por favor me ayude a decidir que es lo mejor para mí, proporcionando algunas a favor y en contra.

Ejemplos de código (Doctrina / Readbean)

// create
$order = new models\Order();
$order = R::dispense('order');

// save
$this->em->persist($order);
$this->em->flush();
R::store($order);

// get row by id
$shop = $this->em->find('models\Shop', $shop_id);
$shop = R::load('shop', $shop_id);

Aviso: me cambié el aceptado respuesta de hakre a Xerosigma, ya que da una mejor visión de conjunto. Por favor observe que hakre la respuesta que proporciona información adicional.

43voto

hakre Puntos 102271

Creo que se debería hacer usted mismo un poco cómodo con los patrones detrás de esos dos capas de abstracción de base de datos.

Primero de todo, ambos tratan con bases de datos relacionales. Que es muy común entre ellos. Ambos ofrecen una capa de acceso a los datos dentro de su programa de w/o la necesidad de correr desnudo de comandos SQL, ambos están ofreciendo una capa de persistencia.

Por las diferencias, considero que:

Sin embargo, esto no debe decir mucho acerca de su caso de uso. Por ejemplo, si la estructura de base de datos ya existe, el uso de las dos bibliotecas pueden diferir.

Así que primero mire lo que usted realmente necesita. ¿Cómo es tu aplicación diseñada? Si ha ligero Transacción de secuencias de comandos y su base de datos no es muy complejo, la RedBean parece útil como parece por su pregunta que creo que hace el trabajo y eres positivo acerca de ello. No es productiva si usted usa una biblioteca que es difícil trabajar con ellos.

Por otro lado, si usted está usando un Modelo de Dominio en la aplicación de la Doctrina de los sonidos más apropiado para mí.

Yo creo que ambos componentes están bien desarrollados, de modo que usted conseguirá mucho en cualquiera de los casos.

Otro punto que me haría a mi mente es acerca de cómo lidiar con los riesgos y problemas. Por ejemplo, no se puede todavía ver en el futuro en el que los problemas que puede ejecutar con la capa de persistencia de la aplicación.

En lugar de pensar en lo que podría ir mal ya en la fase de diseño, es a menudo mejor para empezar a sacar los componentes juntos en pequeñas iteraciones de modo que usted sabe que y cómo la capa de persistencia es trabajar con su aplicación. Y usted sabe el problema, que es mucho más útil para tratar con ellos.

25voto

Xerosigma Puntos 785

Yo estaba en la misma encrucijada recientemente y DOLOROSAMENTE decidí a ir con la Doctrina. No me malinterpreten, lo que RedBeanPHP propone es un desarrollo rápido de la bestia, pero carece de verdadera empresa de nivel de necesidades.

RedBeanPHP

PROS

  • Perfecto para un rápido desarrollo y creación de prototipos
  • Fácil de aprender y aplicar.
  • Funciona sin problemas con el código existente.
  • Usted no necesita un pre-esquema existente.

Los CONTRAS

  • Sólo admite bases de datos relacionales.
  • Un desarrollador
  • Ningún nivel de soporte empresarial.

Doctrina

PROS

  • Un familiar ORM solución. Funciona como se esperaba.
  • De apoyo a las empresas.
  • Un fuerte respaldo.
  • No-relacional de la base de datos de soporte.

Los CONTRAS

  • No tan rápido. (El tiempo de desarrollo-sabio)
  • No tan impresionante.
  • Sólo... ORM.

Me decidí a ir con la Doctrina, por su apoyo para que no bases de datos relacionales, que es absolutamente esencial en una aplicación basada en la nube de la infraestructura. Me gustaría animar a su uso, independientemente debido a que presenta un estándar de la industria para implementar ORM. De todos modos ambos son grandes, yo podría haber sacrificado profesionalismo para RedBeanPHP si se admite bases de datos no relacionales, aunque. :/

24voto

Gabor de Mooij Puntos 1963

RedBeanPHP puede trabajar con modelos de dominio; los frijoles están en la marcha conectada a los modelos. Por ejemplo, supongamos que tenemos una página de frijol:

$page = R::dispense('page');
R::store($page);

Si ahora hacemos un Modelo de Página más tarde, RedBeanPHP va a encontrar el modelo y usted será capaz de agregar enlaces para la tienda (actualización) y otros R:: como métodos:

Model_Page extends RedBean_SimpleModel {
    public function update() { ... gets called by R::store... }
} 

Incluso métodos personalizados son enviadas a la modelo:

$page->addElement();

Así que usted puede tener un modelo de dominio como en la Doctrina, pero usted no tiene que escribir los modelos iniciales, puede escribir los modelos después.

Además, el uso de la ModelFormatter clase se puede decir RedBeanPHP cómo se pueden encontrar los modelos de su frijoles pertenecen, si desea utilizar diferentes convenciones de nomenclatura, por ejemplo.

Más información sobre FUSIBLES: http://www.redbeanphp.com/manual/how_fuse_works

3voto

encodes Puntos 660

la adición de la doctrina en el código existente implicará la escritura de objetos para cada tabla en la que se asigna directamente a la tabla de base de datos. Estoy seguro de que no es una herramienta para hacer esto, pero vale la pena pensar. También hay un montón de tutoriales en la doctrina del sitio web.

No estoy seguro de que en su experiencia en php, pero puede ser vale la pena considerar el uso de ambos y decidir que se adapte a tus necesidades. Puede tomar más tiempo, pero vas a aprender mucho más.

Recientemente asistí a una charla sobre la doctrina y las cosas que se dicen son muy buenos. El concepto sobre el uso de objetos en lugar de consultar la base de datos sólo puede ser una buena cosa en programas grandes.

Nunca he usado Redbean pero mirando por encima de la documentación el concepto de que no requiere una modelo es muy bonito. especialmente si usted está agregando al código existente.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X