Buenas, tenía esta duda, no ando muy bien de tiempo pero me estaba preguntando si merece la pena aprender laravel5. Se un poco de codeigniter, y algo de programación js, jquery y webservices. Quería de la experiencia de alguien que haya utilizado los dos frameworks y me indicara si tiene algo que ver uno con otro, o por el contrario son como el agua y el aceite lo que quiere decir que me va a costar. Por otro lado la configuración de apache en ubuntu para condeigniter era una chorrada, ¿ para laravel es la misma chorrada o se complica más la cosa ?.
Sí que merece la pena. Hasta hace más o menos un año Laravel era desconocido en entornos de trabajo pero desde la versión 4.0 hasta la 5.1 que tenemos ahora se está haciendo bastante popular entre las ofertas que veo por la red.
La configuración del servidor puede que sea un poco más complicada que CI, Laravel te fuerza a tener una versión bastante moderna de PHP (>= 5.5.9) y no te limitas a soltar los archivos en /www, lo instalas mediante Composer.
Recursos para aprender en inglés:
Recursos para aprender en español:
A parte de todo esto, Laravel tiene un ecosistema bastante guay a su alrededor:
- Packalyst (Paquetes desarrollados por la conunidad)
- Lumen (Microframework tipo Silex)
- Cashier (Integración con Stripe)
- Socialite (Login social FB/TW/Github... hay para todos)
- Spark (Esqueleto para aplicaciones tipo SAAS)
- Homestead (Máquina virtual con todo listo para el desarrollo)
- Elixir (Wrapper de Gulp bastante guapo)
Y por último, Taylor Otwell, el creador de Laravel pone a tu disposición un par de servicios para que te olvides tanto de la configuración del servidor y el despliegue.
Mientras existan tutos para configurar e instalar un laravel el lamp ningún problema, que luego pasa lo de siempre, 0 servidores windows para configurar y 99'99%servidores linux.
#3 Si vas a programar en windows, para Laravel, CI, Syfony, la mejor opción es wamp server.
Pero la mejor opción es desinstalar windows y ponerte una distro de linux.
#4 Yo recomiendo usar Vagrant + VirtualBox, con estas páginas, generas máquinas a tu gusto:
Yo programo en windows y solo tengo el IDE instalado, nada de DB, HTTP Server nada.
#5 Si esta preguntando si es muy difícil configurar el server en windows y tu le vienes con Vagrant, suerte XD.
Desde luego es mejor opción, pero hay que tener idea de lo que se esta haciendo.
Mi idea era trabajar bajo windows para cosas generales, compartir la carpeta www o htdocs de apache del windows para trabajar en maquinas virtuales, así si podría programar en windows bajo los programas que quiera y probar en la maquina virtual de linux al encontrarse compartida. No tengo claro si es buena idea, o me puede dar problemas. La otra opción era simplemente ponerle a la maquina virtual un ubuntu con lamp y netbeans para trabajar desde la maquina virtual.
Sobre otras opciones las estudiaré a ver cual puede dar menos quebraderos de cabeza, que lo último que quiero es pelearme con las configuraciones.
Pues ya he empezado a meterme con el tema, instalación del composer, funcionamiento de las dependencias, etc... y por ahora muy bien, me está gustando y no me está pareciendo difícil, pero claro, solo estoy empezando.
#9 esta bien aprender Laravel o cualquier otro framework pero si empiezas por ahí solo sabrás a usar X framework, sabrás donde colocar modelos, los controladores y demás pero no tendrás ni idea de porque y cuando pases a otro framework y en lugar de llamarlo modelo lo llamen entities alomejor te pierdes, te recomiendo, a la par que lees y practicas con laravel (por ejemplo) que también te mires temas de arquitectura y patrones, te lo digo desde mi experiencia, te ayudará muchísimo
#10 ¿ Exactamente que me debería de mirar de patrones ?, ¿ te refieres al flujo de trabajo en caso de no tener framework ?.
El patrón MVC (modelo-vista-controlador) por ejemplo, es el que usan la mayoría de los frameworks de este tipo, y consiste en separar las tres "secciones" para que nos entendamos. En el modelo tienes los datos, en el controlador las acciones, y en la vista lo que aparece en la pantalla.
Échale un ojo a eso
#12 a ver, es un mundo muy grande y no lo vas a saber todo de todo, pero tener nociones básicas te ayudarán muchísimo a no depender de ningún framework para programar e incluso de ningún lenguaje (aunque es mas discutible),
https://es.wikipedia.org/wiki/Arquitectura_de_software
https://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador (fijate que dentro menciona varios tipos de MVC)
No se trata de conocerlos todos ni saber todo lo que hace cada uno pero si saber diferenciarlos y saber ciertas peculiaridades de cada uno, luego el usar laravel o symfony te dará bastante igual (obviamente no estoy hablando de moverte de uno a otro y ser igual de productivo pero que será más fácil de entenderlo y en un corto plazo serás igual de productivo)
Yo ahora estoy tratando mucho con DDD (Domain-Driven Design) y la verdad es que estoy descubriendo cosas que parecen básicas pero que tienen su qué...
Ni Laravel ni Symfony son frameworks MVC.
En los tiempos que estamos necesitamos más de 3 letras para desarrollar una aplicación medianamente compleja y que no te quede una puta basura imposible de mantener como pasaba con CI.
Y ojito con los patrones de diseño, una cosa es saber que están ahí y que están pensados para solventar un determinado problema y otra cosa es decir: "A partir de ahora voy a implementar Repositorios con su correspondiente interface en cada uno de mis proyectos no sea que quiera cambiar a mongo".
Dicho esto, un par de enlaces útiles para aprender cosicas:
https://refactoring.guru
http://designpatternsphp.readthedocs.org/en/latest/README.html
#15 ¿ pero no se supone que esas son las ventajas de usar los frameworks ?, si yo quiero cambiar la bd de mysql a que se yo dinamodb por ejemplo, no se supone que por dentro el framework está utilizando un archivo de configuración y solo tendría que modificar ese sin más ?.
Yosiketedaba, yo me he pegado con Laravel 5 y codeigniter, y la verdad es que laravel 5 tiene cosas muy chulas como el enrutado(poder decir si viene por get,post,put,remove...) y los middelwares, pero nada que no puedas hacer en codeigniter, lo unico que eche en falta al pasar de laravel 5 a codeigniter fue eloquent, que es, como tu dices, lo que te abstrae de las consultas a la bd, (y bueno, la creación de la bd desde su php, eso esta guay, pero no es esencial), asi que como decia, lo que mas note fue su ausencia, pero investigando un poco conseguir instalar eloquent en codeigniter y funciona perfectamente igual que en laravel.
Si sabes PHP en plan bien, yo recomiendo codeigniter, ya que es rapido y te da las principales funcionalidades (eso si, metiendole eloquent, que si no toca hacer sql a mano).
Si no tiraria por laravel ya que la comunidad es muy grande y estan continuamente sacando plugins que te facilitan la vida, y esta perfectamente sincronizado (o como se diga ) con composer.
#17 Me vi hace un par de años algo de symfony2.3 donde el controlador tenía que terminar en Action y encima como una especie de comentarios se le ponía las variables que iba a recibir y el método de transferencia post o get. Entiendo que eso es el enrutado ¿ no ?, los middleware entiendo que sería el sistema en si de transferencia de información ¿ no ?, es decir como un manejador de lo que se envía, si lo que se envía es correcto... mandar error 304 apache, sino.. devuelve un codigo 200 http de apache no ?.
Por lo que veo de php me fallan algunas cosas orientadas a objetos, es decir, yo uso una clase/librería la cual tiene una serie de parámetros, pues me quedé un poco loco que en una función
/**
* Add a "To" address.
* @param string $address
* @param string $name
* @return boolean true on success, false if address already used
*/
public function addAddress($address, $name = '')
{
return $this->addAnAddress('to', $address, $name);
}
No entiendo como hace para almacenar para todos los correos como si fuera un array. Ya que se usa de esta forma:
foreach($destinatario as $user)
$mail->addAddress($user, $user);
Cuando esperaba que solo enviara al último de los $user y no a todos.
#18
no sabia que symfony hacia asi los enrutados, que guapo es como en los franeworks de Java.
Y los middlewares de laravel 5 es por donde va a pasar antes de que te envie al controlador que vaya a hacer las cosas, por ejemplo, para saber si el usuario esta log o no lo puedes hacer con un middleware y que si no esta log lo mandas a fregar y si si lo esta que siga con la ejecución.
#18 #19
Siento poner dos mensajes, pero desde el mvl es una shit xD
Con respecto al codigo que pones (welcome to the fucking magic bitch! xD)
En el caso de symfony no se que hace internamente, si fuera laravel tengo una idea , aun que me imagino que simplemente estara añadiendolo a la base de datos y añadiendo ese objeto al objeto $user(o el que ejecute el add que en el mvl no puedo ver lo escrito :/)
Y una vez asi tienes todos los nuevos (o los actualizados)
Por que me imagino que al igual que en laravel si le pasas el propio objeto ya existente y le cambias cosas te modificara dicha fila de la base de datos.
Espero que lo entiendas o que te sirva
Mi opinion es que php va para abajo, pero si tuviese que elegir, si , laravel es la polla, es el que mas me gusta con diferencia