2008-09-25 19 views
14

Nunca utilicé ningún marco público (siempre usé frameworks internos, o el mío). Veo que Symfony tiene un lot of tutorials and nice documentation y parece tener todo desde CRUD hasta el manejo de múltiples idiomas.¿Es Symfony un buen marco para aprender?

¿Crees que es un buen marco para construir un sitio web que es más complicado que un blog *? Si no, ¿cuál es otra alternativa?

* Sitio web con inicio de sesión para administrar los datos financieros.

Respuesta

13

Symfony 2

Symfony2 ha abordado muchos de los problemas con Symfony 1.

  • Permite una gran flexibilidad en torno a cómo el proyecto es de configuración.

  • Es muy rápido y comparable a otros marcos web

  • Propel y Doctrina se apoyaron, pero no se hacen cumplir. El creador puede elegir usar lo que quiera como ORM. O ninguno en absoluto.

  • Algunos de los componentes de Symfony2 se están implementando en grandes proyectos como Drupal y PhpBB.

Symfony 1

Symfony 1 parecía realmente bueno, pero tenía algunas limitaciones.

Estaba pulido y tenía buena documentación. No había nada específicamente mal con eso. Parecía que todo era más difícil de lo que era necesario.

  • El patrón de registro activo era bueno para empezar, pero finalmente comenzó a ser un cuello de botella de rendimiento.

  • Propel hizo bastante complejas las consultas SQL complejas. Creole le permitió "construir" preguntas de manera OO, pero escribir SQL a mano hubiera sido mucho más fácil.

  • Hay una fuerte preferencia por la configuración sobre el código (Symfony ama yaml). Esto significa que tendrá que buscar constantemente qué archivo de configuración y qué opción necesita cambiar. Si coloca su definición de configuración en el nivel incorrecto (por ejemplo, debajo del nodo primario incorrecto), entonces no sabrá por qué las cosas no funcionan.

  • La documentación parecía un poco tutorial enfocada. A menudo solo quería una referencia realmente sólida. Esto a menudo estaba relacionado con buscar una definición de configuración.

  • La estructura del marco es bastante rígida. Tienes que implementar las cosas exactamente de la manera que los diseñadores intentaron.

  • El framework terminó siendo bastante lento. Estábamos tratando de manejar una cantidad moderada de tráfico (tal vez 50,000 únicos al día) y el servidor que usamos simplemente no pudo soportarlo.

Muchos de estos problemas desaparecerían después de algunos proyectos de Symfony. Si tuviera que buscar un nuevo framework, entonces probablemente miraría CodeIgnitor, que es mucho más simple y liviano.

Después de Symfony terminé escribiendo un marco muy pequeño para imponer un patrón MVC. Me gustó esto mucho mejor ya que pude desarrollar el código de marco para que coincida con mis problemas específicos. Esto no es realmente lo "correcto" que hacer, pero funcionó para mí. Lo he usado en aproximadamente media docena de proyectos y he agregado y recortado mi código para mantenerlo liviano.

+1

He intentado la sinfonía y tienes razón sobre el enfoque del tutorial. El problema es que acaban de lanzar el tutorial para el lanzamiento actual, así que he tratado de aprender de la documentación anterior y muchas cosas han cambiado, por lo que mi experiencia fue un infierno. Espero que arreglen sus cosas. –

+8

Symfony es un marco de nivel empresarial. Si quieres algo básico, usa CodeIgniter. Si desea iniciar una empresa y ganarse la vida con su aplicación web, use Symfony. –

+0

He usado Symfony para varias aplicaciones complejas y estoy de acuerdo con el comentario de Jon. Sin embargo, una vez que hayas superado la pronunciada curva de aprendizaje de Symfony, es igual de fácil (o más fácil, yo diría) usar CodeIgniter para proyectos pequeños. –

18

Sí, es un gran marco. Lo he usado para construir varios sitios de diversas complejidades. Uno es un sitio para pequeñas empresas con solo un puñado de páginas y un formulario de contacto. Otro es un sitio complejo de entrega de archivos con miles de usuarios y decenas de miles de transacciones por mes. Varios de mis clientes lo usan: uno tiene más de 100 mil usuarios.

Hay una buena comunidad de usuarios, irc generalmente tiene personas útiles, y hay varios complementos para facilitar las tareas comunes. Tiene un generador de administrador muy agradable. El ORM (Propel) es un poco prolijo, pero permite la mayoría de las funciones comunes de la base de datos: restricciones, claves externas, índices, etc. Los objetos Form en 1.1 son agradables.

Mayores quejas: es prolijo y pesado como un directorio. El uso excesivo de los archivos de configuración puede hacer que las cosas sean un poco difíciles de entender.

Definitivamente recomendado.

2

Aquí hay alguna información que acabo de encontrar:

  • MVC diseño impulsado
  • ORM utilizando Doctrina o propulsar
  • archivos YAML de configuración
  • trabajo en Linux y Windows
  • Uso diseño y plantilla
+0

Yaml es solo el lenguaje de configuración para el esquema. ORM es hecho realmente por Propel o Doctrine. –

3

@Daok

Yaml solo se usa en el ORM para definir su esquema. Realmente no define ningún comportamiento. Propel se basa en el código generado y utiliza el schema.yml para crear los modelos.

También funciona en OS X.

También tiene una capa de almacenamiento en caché bastante buena.

+0

HUm thx! +1 Pero si tengo una base de datos MySQL ya creada, creo que puedo obtener schemas.xml de ella, ¿verdad? –

2

Symfony no funciona con PHP 4. Las aplicaciones de alojamiento de sistemas específicas de PHP4 no podrán usar Symfony. Si PHP4 no es un requisito, Symfony es una muy buena opción.

+0

Thx para la información +1 –

0

todavía no estoy seguro porque no veo una gran cantidad de proyectos que han utilizado este marco ... CakePHP y Zend aspecto más popular, pero Symfony parece interesante ...

-2

Zend parece superior, pero realmente le falta en la documentación.

1

Symfony es la mejor opción. Trabajé con él en muchas aplicaciones y es el mejor framework que he usado. La documentación y la ayuda de la comunidad son muy útiles y el marco en sí mismo es muy fácil de aprender y de trabajar.

2

No veo la complejidad de la aplicación como un obstáculo para la adopción de Symfony.

No creo que nadie elija Symfony por razones de alto rendimiento, pero lo mismo probablemente sea cierto para todos los frameworks principales. Una vez dicho esto, no hemos tenido absolutamente ningún problema de rendimiento.

Probablemente no sea el mejor para compararlo con Zend, Symfony es un armazón de stack completo, debes estar preparado para hacer las cosas de la manera Symfony. Me pareció un placer usarlo. Recomiendo leer el libro oficial de Symfony (disponible en línea) en su totalidad antes de comenzar. Propel (symfonys ORM) fue un poco frustrante de aprender, pero funciona bien una vez que superas la curva de aprendizaje.

Está realmente lleno de cosas útiles y se pone mejor cuanto más lo uses.

0

Como mencionó Gaurav, Symphony no es compatible con PHP4. Si está buscando un marco de PHP decente, es posible que desee verificar Code Igniter.

+0

¿Las personas todavía usan PHP4? He encontrado la limitación de Code Igniter porque tiene que ser compatible con PHP4 (sin PDO). –

+4

¿Por qué alguien querría desarrollar en PHP4? Especialmente un nuevo proyecto! –

1

Hemos estado usando sf en el trabajo durante los últimos 6 meses y hasta ahora estoy bastante impresionado con él. Hay una comunidad de desarrollo de complementos bastante saludable desarrollada a su alrededor y el marco principal parece desarrollarse muy rápidamente. La versión 1.2 que saldrá en diciembre hará que el marco sea oficialmente independiente del uso de Propel o Doctrine para la capa ORM, que ofrece una gran flexibilidad para el usuario final. La curva de aprendizaje inicial es un poco abrupta, ya que definitivamente hay una "manera de Symfony" a la que te tienes que acostumbrar, pero al igual que con otros frameworks completos como Rails, una vez que entiendes de qué se trata, encuentro que el desarrollo es bastante rápido.

0

Para las alternativas que he utilizado CakePHP. En los últimos 10 meses, he desarrollado algunas aplicaciones complejas de nivel de blog con aplicaciones para uso interno. Fue fantástico para eso. Es fácil de acceder, no necesita un php muy reciente, los documentos son decentes y al no encontrar una respuesta, generalmente se encuentra en la lista de correo.

El principal problema que tuve con la torta era que yo no sentía que tenía tanto control sobre su ORM, y aunque han mejorado en esa zona recientemente con la adición de soporte para agrupar cláusulas Todavía no puedo especificar se une explícitamente. Esto lleva a situaciones en las que puede tener un bajo rendimiento porque el orm decide que necesita hacer un montón de consultas para obtener datos de los modelos relacionados. O puede usar hacks como este http://teknoid.wordpress.com/2008/07/17/forcing-an-sql-join-in-cakephp/ que funciona pero es un poco feo. A medida que las aplicaciones comenzaron a crecer y más y más modelos se agregaron al esquema, comencé a encontrarme con la situación cada vez más a menudo, así que decidí cambiar a algo que soportara un ORM con más funciones (tuve otros productos con pastel, pero la mayoría eran bastante menores). Me molestó por un tiempo, pero me conformé con la idea de que el pastel es una excelente herramienta, simplemente no es la herramienta adecuada para mí.

Miré principalmente a Zend y Symfony (solo rocé los documentos de CodeIgniter y vi el screencast). Terminé recogiendo Symfony porque parecía tener el equilibrio adecuado de potencia y facilidad de uso. Puede usar Doctrine y Propel, hay muchos complementos y muchos documentos. Me abroché el cinturón de seguridad listo para lidiar con los millones de archivos yml que pensé que tendría que editar, pero para mi sorpresa no tuve que configurar demasiado. Zend parece bastante poderoso, pero parece demasiado de Do It Yourself para mis proyectos actuales. Por lo que leí, también puedo usar Zend libs dentro de mis proyectos Symfony sin demasiados problemas, así que sellé el trato.

Por lo tanto, en resumen, lo que elija dependerá de sus necesidades. Si te ves realizando consultas complejas, probablemente deberías elegir una que tenga una muy buena biblioteca de base de datos o al menos te permita usar fácilmente una alternativa sin renunciar a las sutilezas del marco (entiendo que CodeIgniter puede usar doctrina, por ejemplo).

2

Symfony es un buen marco, que utiliza aproximadamente los mismos patrones de diseño que componen Ruby on Rails, pero no es "PHP on Rails", ya que tiene sus propios pros y contras.

A partir de Symfony 1.2 Doctrine es el segundo ORM, que viene con él. Para versiones anteriores hay complementos.

Acerca de la totalidad del negocio YAML: si prefiere los archivos de configuración XML o cualquier otro formato de archivo, puede conectarlos. YAML es solo el predeterminado.

Por último, pero no menos importante, puede salir de la estructura por defecto (aún tiene que configurar eso). La documentación (cf. el Symfony Book) establece eso explícitamente.

Por último, es una cuestión de gusto y preferencia personal. Mi consejo sería leer el libro de Symfony (puedes obtenerlo gratis del sitio web del proyecto) y tratar de seguir el proyecto de ejemplo. Si te gusta eso, úsalo. Si no, intente con otra cosa.

3

Me gusta codeigniter personalmente, porque es muy fácil de codificar y está muy bien documentado.

11

PARECE tener buena documentación, pero en los detalles cuando intentas seguirla, es una pesadilla.

+0

Totalmente de acuerdo. No hay un solo tutorial que seguí y que salió de la caja. Cada vez que tenía que suplicarle a alguien que me ayudara. Además, tienen pesadillas con versiones de todo. Cada nueva versión tiene diferentes protocolos y los tutoriales antiguos no funcionan bien con ella. Me pregunto por qué es tan popular?!? – MilanG

1

He intentado con CakePHP, CodeIgniter, ZendFramework y Yii. Todos ellos tienen pros y contras, pero debo admitir que me gusta Symfony más porque es muy flexible, puedes elegir solo los componentes que requieres, de manera diferente a los otros frameworks que mencioné. Bueno, para ser justos, también puedes usar las bibliotecas de Zend.

Además, Symfony está bien documentado, y tiene una gran comunidad. Su curva de aprendizaje es una curva de aprendizaje relativamente empinada, pero cuando dominas el camino hacia el trabajo, verás que es realmente útil.

0

Encuentro que todos solo hablan sobre los aspectos positivos del framework Symfony, pero cuáles son sus inconvenientes. En mi experiencia personal, odio el sistema de caché de symfony2 que devorará tu cerebro en el entorno de desarrollo. Su desarrollo es muy lento y, por supuesto, es muy molesto.

No puede volver a cargar la página para ver los cambios cada vez que guarde un cambio en el archivo debe dirigirse a la terminal borre la caché y espere unos 10 segundos y aparece el problema de cambio de permisos si trabaja en mac y luego, espere unos segundos para ver el cambio.

Literalmente, puede desarrollar dos aplicaciones usando zend framework al mismo tiempo que puede usar para desarrollar una aplicación en symfon2 asumiendo la misma aplicación.

Además hay otras desventajas pero esta es la peor parte de symfony2. Nunca está optimizado para el desarrollo. ¿Cómo tiene sentido como marco de producción optimizado si uno no puede desarrollarse correctamente?

2

Yo diría YII después de probar todo CakePHP, Zend y Symphony.

Tiene las características como MVC, DAO/ActiveRecord, almacenamiento en caché, autenticación y control de acceso basado en roles, andamios, pruebas, etc. Es liviano y tiene un poderoso soporte de almacenamiento en caché. La seguridad es parte de este trabajo de marco. Incluye validación de entrada, filtrado de salida, inyección SQL y prevención de scripts entre sitios. También Yii es mucho más rápido porque usa una técnica de carga diferida. No habilita una funcionalidad hasta o a menos que se haya invocado por primera vez. Por ejemplo, no crea un objeto a menos que se llame al objeto por primera vez. Otros marcos sufren el golpe de rendimiento porque habilitarían una funcionalidad sin importar si se usa o no durante una solicitud.

Yii te ofrece la alegría del desarrollo en su verdadero sentido con la libertad de modificar cada aspecto sin la extraña magia que se pretende mantener oculta como en el caso de decir CakePHP.

Al final es solo una opinión personal, supongo.

Cuestiones relacionadas