{"id":551,"date":"2012-07-12T21:22:15","date_gmt":"2012-07-12T21:22:15","guid":{"rendered":"http:\/\/www.palentino.es\/blog\/?p=551"},"modified":"2012-07-12T21:35:18","modified_gmt":"2012-07-12T21:35:18","slug":"frameworks-en-php-y-patron-mvc","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/frameworks-en-php-y-patron-mvc\/","title":{"rendered":"Frameworks en PHP y el patr\u00f3n arquitect\u00f3nico MVC"},"content":{"rendered":"<p style=\"text-align: justify;\">Al hablar de c\u00f3digo web, el lenguaje de scripting PHP es el m\u00e1s famoso del mundo, debido a muchas razones, pero principalmente por su amplia flexibilidad y simpleza.<\/p>\n<p style=\"text-align: justify;\">Pero en ocasiones, la codificaci\u00f3n PHP puede volverse bastante mon\u00f3tona y repetitiva. Generaci\u00f3n de c\u00f3digo enrevesado y no testado por falta de tiempo, es en esas ocasiones cuando nos resultar\u00e1 \u00fatil un framework PHP.<\/p>\n<p style=\"text-align: justify;\">Los frameworks PHP hacen mucho m\u00e1s din\u00e1mico y r\u00e1pido el desarrollo de aplicaciones web escritas en PHP, poniendo a nuestra disposici\u00f3n estructuras b\u00e1sicas mediante las cuales construir las aplicaciones. En otras palabras, los frameworks ayudan a promover el r\u00e1pido desarrollo de aplicaciones (R.A.D.), y reducen la cantidad de c\u00f3digo repetitivo para los desarrolladores.<\/p>\n<p style=\"text-align: justify;\"><!--more--><\/p>\n<p style=\"text-align: justify;\">Tambi\u00e9n pueden ayudar a que los principiantes construyan aplicaciones m\u00e1s estables, asegurando interacci\u00f3n apropiada con la base de datos y codificaci\u00f3n en la presentaci\u00f3n del dise\u00f1o. Esto te permite pasar m\u00e1s tiempo creando la aplicaci\u00f3n propiamente dicha, en lugar de gastarlo escribiendo una y otra vez el mismo c\u00f3digo.<\/p>\n<p style=\"text-align: justify;\">La idea general detr\u00e1s del funcionamiento de un framework PHP es conocida como Model View Controller (M.V.C.). MVC es un patr\u00f3n arquitect\u00f3nico en programaci\u00f3n que asimila la l\u00f3gica del negocio de la UI, permitiendo que una pueda ser modificada sin necesidad de modificar a la otra. Con MVC, Model hace alusi\u00f3n a la informaci\u00f3n, View a la presentaci\u00f3n del dise\u00f1o y Controller a la aplicaci\u00f3n o l\u00f3gica del negocio.<\/p>\n<p style=\"text-align: justify;\">B\u00e1sicamente, M.V.C. separa el proceso de desarrollo de una aplicaci\u00f3n, para que podemos trabajar sobre elementos individuales y que los otros no se vean afectados. Esencialmente, esto hace que la codificaci\u00f3n en PHP sea m\u00e1s r\u00e1pida y menos complicada.<\/p>\n<p><strong>Entonces \u00bf Por qu\u00e9 usar un framework PHP ?, \u00bf Cu\u00e1les son sus ventajas ?<\/strong><\/p>\n<p style=\"text-align: justify;\">Los desarrolladores deber\u00edan utilizar frameworks PHP por varias razones, pero la primera de ellas es para acelerar el proceso de desarrollo. Reutilizar c\u00f3digo a lo largo de varios proyectos similares la salvar\u00e1 a los desarrolladores una cantidad incre\u00edble de tiempo que de otra manera, ser\u00eda empleado en tareas tediosas de codificaci\u00f3n.<\/p>\n<p style=\"text-align: justify;\">La estabilidad es otra gran raz\u00f3n para usar frameworks. Si bien la simplicidad es uno de los mayores logros de PHP, tambi\u00e9n puede ser una de sus mayores fallas. Esto se debe a que es muy f\u00e1cil, especialmente para los principiantes, escribir c\u00f3digo malo sin siquiera darse cuenta. Con PHP la aplicaci\u00f3n, a menudo, funcionar\u00e1 pero puede que sin saberlo hayas abierto un gran agujero en la seguridad de tu sitio, haciendo que sea susceptible a ataques.<\/p>\n<p style=\"text-align: justify;\">Es necesario recordar que PHP es importante ajustar bien todos los cabos sueltos de nuestro c\u00f3digo, aunque la aplicaci\u00f3n parezca estar funcionando a la perfecci\u00f3n.<\/p>\n<div>\n<p style=\"text-align: justify;\">Para muchos principiantes, un framework ofrecer\u00e1 simplicidad como as\u00ed tambi\u00e9n estabilidad, por lo que puede resultar una buena idea utilizarlo siempre que sea posible. El mismo ayudar\u00e1 a reducir o eliminar la mala codificaci\u00f3n y acelerar\u00e1 el proceso.<\/p>\n<p style=\"text-align: justify;\">Finalmente, la disponibilidad de un framework PHP es extensiva, y existen muchos entre los cuales podemos elegir. Incluso puedes crear uno propio. M\u00e1s all\u00e1 de esto, debemos tener presente que siempre deber\u00edamos examinar nuestro proyecto antes de decidir siquiera si utilizar uno o no.<\/p>\n<p style=\"text-align: justify;\">Como \u201c<strong>inconvenientes<\/strong>\u201d, podemos mencionar que muchos programadores PHP experimentados ven a los frameworks como herramientas \u201cdebilitadoras\u201d que no entienden c\u00f3mo escribir c\u00f3digo limpio y bueno.<\/p>\n<p style=\"text-align: justify;\">Si esto es as\u00ed o no, es algo para debatir. Pero la realidad es que los frameworks sirven verdaderamente para ahorrar tiempo y ajustar desperfectos en la codificaci\u00f3n.<\/p>\n<p style=\"text-align: justify;\">Al trabajar en un proyecto con una fecha de entrega ajustada, usar un framework PHP es un gran beneficio.<\/p>\n<p style=\"text-align: justify;\">Respecto a la elecci\u00f3n de uno determinado, al buscar el framework PHP que mejor se adapte a tus necesidades es importante tener en mente qui\u00e9n utilizar\u00e1 \/ modificar\u00e1 las aplicaciones.<\/p>\n<p style=\"text-align: justify;\">Si son muchas las personas que usar\u00e1n la aplicaci\u00f3n, ser\u00e1 mejor implementar un framework PHP popular con el cual muchos desarrolladores est\u00e9n familiarizados.<\/p>\n<p style=\"text-align: justify;\">Por otro lado, si deseamos construir aplicaciones web para uso personal, podremos seleccionar cualquier framework con el que nos encontremos c\u00f3modos, ya sea popular o no.<\/p>\n<p>Algunos de los factores que debemos buscar en un framework son:<\/p>\n<ul>\n<li>&#8211; \u00a0facilidad de uso.<\/li>\n<li>&#8211; \u00a0desarrollo\/desempe\u00f1o r\u00e1pido.<\/li>\n<li>&#8211; \u00a0popularidad y soporte (p\u00e1ginas de ayuda, gu\u00edas, foros en donde consultar sobre cualquier inconveniente, etc.)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Es recomendable probar varios frameworks al comenzar para saber cual se adapta mejor a nuestras necesidades. Esto se debe a que cada framework posee sus propias debilidades (que las convierten en inconvenientes) y fortalezas. Otra forma excelente de seleccionar un framework es consultar con los contactos y profesionales de desarrollo sobre cu\u00e1l es el que ellos prefieren.<\/p>\n<p><strong>Pero \u00bfCu\u00e1les son los errores m\u00e1s comunes al usar un framework determinado?<\/strong><\/p>\n<p style=\"text-align: justify;\">Los errores son posibles en cualquier tipo de programaci\u00f3n, pero los frameworks PHP ayudan\u00a0a limitarlos.<\/p>\n<p style=\"text-align: justify;\">Sin embargo, hay ciertas cosas con las que debemos ser cuidadosos al utilizar un framework PHP. Por ejemplo, a menos que seamos expertos en programaci\u00f3n PHP, siempre deberemos optar por utilizar un framework popular que cuente con mucho soporte y una base de usuario activa. Existen muchos frameworks que tienen poco o nulo soporte y han sido creados por individuos con conocimiento PHP limitado. Estos pueden hacer que la aplicaci\u00f3n no funcione apropiadamente, o causar problemas de seguridad catastr\u00f3ficos en tu web.<\/p>\n<\/div>\n<div>\n<p style=\"text-align: justify;\">Otro error com\u00fan suele ser no asegurarse de que la base de datos y el servidor web sean compatibles con ese framework particular. Por ejemplo, el framework Seagull PHP recomienda la siguiente configuraci\u00f3n:<\/p>\n<p style=\"text-align: justify;\">PHP: PHP 4.3.0 es lo m\u00ednimo, versiones m\u00e1s avanzadas funcionan bien, como as\u00ed tambi\u00e9n PHP 5.1.1 y superiores. Evitar las series 5.0.x.<\/p>\n<p style=\"text-align: justify;\">MySQL: MySQL 4.0.x, 4.1.x y 5.0.x son todos soportados. Tambi\u00e9n se puede usar 3.23.x.<\/p>\n<p style=\"text-align: justify;\">Apache: Seagull funciona bien con las series 1.3.x y 2.x de Apache.<\/p>\n<p style=\"text-align: justify;\">Si no disponemos de estos requerimientos, no podremos obtener el desempe\u00f1o perfecto de este framework. Incluso si somos expertos en PHP, siempre deberemos leer la documentaci\u00f3n del framework para confirmar la compatibilidad antes de probarlo.<\/p>\n<p style=\"text-align: justify;\">De manera similar al error mencionado anteriormente, no seguir las recomendaciones del proceso de instalaci\u00f3n puede ser un gran dolor de cabeza. La clave es tomarse nuestro tiempo en programar sobre el framework y seguir las instrucciones de instalaci\u00f3n como es debido.<\/p>\n<p><strong>\u00bfCu\u00e1les son los mejores Frameworks existentes?<\/strong><\/p>\n<p style=\"text-align: justify;\">En los \u00faltimos a\u00f1os ha existido una explosi\u00f3n de frameworks PHP. Existen grandes debates acerca de cu\u00e1l es el mejor framework, porque la realidad es que no todos los frameworks le sirven a cualquiera. Mostrar\u00e9 una simple revisi\u00f3n acerca de 6 de las mejores y m\u00e1s populares opciones.<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<div>\n<p><span style=\"color: #000080;\"><strong>CakePHP , Web: <a href=\"http:\/\/cakephp.org\/\" target=\"_blank\">http:\/\/cakephp.org\/<\/a><\/strong><\/span><\/p>\n<p style=\"text-align: justify;\">Es un framework de desarrollo de aplicaciones web escrito en PHP, creado sobre los conceptos de Ruby on Rails. CakePHP empez\u00f3 en 2005, cuando Ruby On Rails estaba ganando popularidad y utiliza muchos de sus conceptos. Desde entonces la comunidad creci\u00f3 y gener\u00f3 muchos sub-proyectos. CakePHP es una gran opci\u00f3n tanto para desarrolladores PHP principiantes como para avanzados.<\/p>\n<p style=\"text-align: justify;\">Su sistema de soporte creciente, simplicidad y escalabilidad hacen que CakePHP sea una de los frameworks PHP m\u00e1s populares hoy en d\u00eda.<\/p>\n<p style=\"text-align: justify;\">CakePHP es un framework o marco de trabajo que facilita el desarrollo de aplicaciones web, utilizando el patr\u00f3n de dise\u00f1o MVC. Es de c\u00f3digo abierto y se distribuye bajo licencia MIT.<\/p>\n<p style=\"text-align: justify;\">Cakephp est\u00e1 desarrollado en PHP con programaci\u00f3n orientada a objetos. Al igual que Ruby On Rails, CakePHP facilita al usuario la interacci\u00f3n con la base de datos mediante el uso de ActiveRecord. Adem\u00e1s hace uso del patr\u00f3n Modelo Vista Controlador.<\/p>\n<p style=\"text-align: justify;\">Compatible con PHP4 y PHP5, CRUD de la base de datos integrado, URLs amigables, Sistema de plantillas r\u00e1pido y flexible, Ayudas para AJAX, Javascript, HTML, forms. Trabaja en cualquier subdirectorio del sitio, Validaci\u00f3n integrada, Scaffolding de las aplicaciones, Access Control Lists, Sanitizaci\u00f3n de datos. Componentes de seguridad y sesi\u00f3n.<\/p>\n<\/div>\n<div>\n<p style=\"text-align: justify;\"><span style=\"color: #000080;\"><strong>Seagull, web <a href=\"http:\/\/seagullproject.org\/\" target=\"_blank\">http:\/\/seagullproject.org\/<\/a><\/strong><\/span><br \/>\nSeagull es un framework PHP muy reconocido utilizado para la construcci\u00f3n de webs, l\u00edneas<\/p>\n<p style=\"text-align: justify;\">de comando y aplicaciones GUI.<\/p>\n<p style=\"text-align: justify;\">Es extremadamente f\u00e1cil de usar, ideal para principiantes y expertos. Para los principiantes Seagull posee una librer\u00eda con aplicaciones de muestra que pueden ser personalizadas para adaptarse a tus necesidades, y para los m\u00e1s expertos ofrece muchas opciones para construir aplicaciones web r\u00e1pida y f\u00e1cilmente.<\/p>\n<p style=\"text-align: justify;\">Seagull posee una comunidad de desarrolladores activa y mucha documentaci\u00f3n de soporte tambi\u00e9n.<\/p>\n<p><strong><span style=\"color: #000080;\">Zend Framework, web:<a href=\" http:\/\/framework.zend.com\/\" target=\"_blank\"> http:\/\/framework.zend.com\/<\/a><\/span><\/strong><\/p>\n<p style=\"text-align: justify;\">Para muchos el mejor, puesto que lo consideran el \u00fanico que tiene futuro, no solo porque es el oficial, sino porque va acompasando las nuevas versiones de PHP. ZF ya est\u00e1 pensado para php 6.<\/p>\n<p style=\"text-align: justify;\">The Zend Framework posee un gran seguimiento entre la comunidad de desarrolladores y est\u00e1 enfocado a las aplicaciones tipo web 2.0.<\/p>\n<p style=\"text-align: justify;\">Debido a su seguimiento masivo, soporte extensivo y base de usuario activa, Zend es conocido como \u201cThe PHP Company\u201d. Zend podr\u00eda considerarse el framework m\u00e1s popular de la actualidad. Posee propiedades importantes que est\u00e1n construidas para el desarrollo a nivel corporativo y requiere un gran conocimiento de PHP.<\/p>\n<p style=\"text-align: justify;\">Zend Framework (ZF) es un framework de c\u00f3digo abierto para desarrollar aplicaciones web y servicios web con PHP 5. ZF es una implementaci\u00f3n que usa c\u00f3digo 100% orientado a objetos.<\/p>\n<p style=\"text-align: justify;\">La estructura de los componentes de ZF es algo \u00fanico; cada componente est\u00e1 construido con una baja dependencia de otros componentes. Esta arquitectura d\u00e9bilmente acoplada permite a los desarrolladores utilizar los componentes por separado. A menudo se refiere a este tipo de dise\u00f1o como &#8220;use-at-will&#8221; (uso a voluntad).<\/p>\n<p style=\"text-align: justify;\">ZF ofrece un gran rendimiento y una robusta implementaci\u00f3n MVC, una abstracci\u00f3n de base de datos f\u00e1cil de usar, y un componente de formularios que implementa la prestaci\u00f3n de formularios HTML, validaci\u00f3n y filtrado para que los desarrolladores puedan consolidar todas las operaciones usando de una manera sencilla la interfaz orientada a objetos.<\/p>\n<p style=\"text-align: justify;\">Otros componentes, como Zend_Auth y Zend_Acl, proveen autentificaci\u00f3n de usuarios y autorizaci\u00f3n diferentes a las tiendas de certificados comunes. Tambi\u00e9n existen componentes que implementan bibliotecas de cliente para acceder de forma sencilla a los web services m\u00e1s populares.<\/p>\n<div>\n<p style=\"text-align: justify;\">El principal patrocinador del proyecto Zend Framework es Zend Technologies, pero muchas empresas han contribuido con componentes o caracter\u00edsticas importantes para el marco.<\/p>\n<p style=\"text-align: justify;\">Empresas como Google, Microsoft y StrikeIron se han asociado con Zend para proporcionar interfaces de servicios web y otras tecnolog\u00edas que desean poner a disposici\u00f3n de los desarrolladores de Zend Framework.<\/p>\n<p style=\"text-align: justify;\"><strong><span style=\"color: #000080;\">Symfony, web: <a href=\"http:\/\/www.symfony-project.org\/\" target=\"_blank\">http:\/\/www.symfony-project.org\/<\/a><\/span><\/strong><\/p>\n<p style=\"text-align: justify;\">Symfony est\u00e1 m\u00e1s bien enfocado a desarrolladores avanzados cuyo objeto principal son aplicaciones de nivel corporativo. Este framework open-source posee una gran cantidad de propiedades y puede hacer de todo, pero su mayor falla es que es un poco m\u00e1s lento que otros frameworks.<\/p>\n<p><span style=\"color: #000080;\"><strong>Codelgniter, web: <a href=\"http:\/\/www.codeigniter.com\" target=\"_blank\">http:\/\/www.codeigniter.com<\/a><\/strong><\/span><\/p>\n<p style=\"text-align: justify;\">Codelgniter es muy conocido por su utilizaci\u00f3n simple, desempe\u00f1o y velocidad. A diferencia de Symfony, este framework es ideal para las cuentas de hosting compartidas o para cuando deseas un framework con una peque\u00f1a huella. Ofrece soluciones simples, y posee una extensa librer\u00eda de videos tutoriales, foros, una gu\u00eda de usuario y una wiki disponible. Los principiantes deber\u00edan realmente tenerlo en cuenta.<\/p>\n<p><strong><span style=\"color: #000080;\">KumbiaPHP, Framework PHP en espa\u00f1ol, <a href=\"http:\/\/www.codeigniter.com\" target=\"_blank\">http:\/\/www.kumbiaphp.com<\/a><\/span><\/strong><\/p>\n<p style=\"text-align: justify;\">KumbiaPHP es un framework para aplicaciones web libre escrito en PHP5. Basado en las pr\u00e1cticas de desarrollo web como <strong>DRY<\/strong> (No repitas lo mismo) y el Principio <strong>KISS<\/strong> (realizarlo sencillo), para software comercial y educativo. Kumbiaphp fomenta la velocidad y eficiencia en la creaci\u00f3n y mantenimiento de aplicaciones web, reemplazando tareas de codificaci\u00f3n repetitivas por poder, control y placer.<\/p>\n<p style=\"text-align: justify;\">KumbiaPHP Framework PHP intenta proporcionar facilidades para construir aplicaciones robustas para entornos comerciales. Esto significa que el framework es muy flexible y configurable.<\/p>\n<p style=\"text-align: justify;\">KumbiaPHP es un esfuerzo por producir un framework que ayude a reducir el tiempo de desarrollo de una aplicaci\u00f3n web sin producir efectos sobre los programadores.<\/p>\n<p style=\"text-align: justify;\">Sus principales caracter\u00edsticas son:<\/p>\n<p style=\"text-align: justify;\">Sistema de Plantillas sencillo, Administraci\u00f3n de Cache, Scaffolding Avanzado, Modelo de Objetos y Separaci\u00f3n MVC, Soporte para AJAX, Generaci\u00f3n de Formularios, Componentes Gr\u00e1ficos, Seguridad y muchas cosas m\u00e1s.<\/p>\n<p style=\"text-align: justify;\">Adicional a esto KumbiaPHP integra lo mejor de la Web en un solo framework para producir las aplicaciones Web del ma\u00f1ana (prototypejs, phpMailer, Smarty, FPDF, Script.aculo.us)<\/p>\n<div>\n<h2><strong>Resumiendo:<\/strong><\/h2>\n<p style=\"text-align: justify;\">Los frameworks PHP son una gran forma de reducir la necesidad de c\u00f3digo repetitivo, acelerar el proceso de desarrollo y asegurar la codificaci\u00f3n apropiada al crear aplicaciones web, tanto para desarrolladores avanzados como para principiantes.<\/p>\n<p style=\"text-align: justify;\">Si bien algunos expertos PHP no sienten la necesidad de utilizar frameworks al construir aplicaciones web, estos pueden resultar una ventaja a la hora de necesitar desarrollar r\u00e1pidamente un proyecto.<\/p>\n<p style=\"text-align: justify;\">Y para los principiantes, los frameworks pueden mejorar el proceso de aprendizaje PHP, mientras promueven buenas pr\u00e1cticas de codificaci\u00f3n.<\/p>\n<p style=\"text-align: justify;\">Existen una gran cantidad de frameworks dando vueltas por la red de redes actualmente. S\u00f3lo debemos asegurarnos de seleccionar el que mejor se adapte a nuestras necesidades.<\/p>\n<p style=\"text-align: justify;\">Como opini\u00f3n personal, considero que ser\u00eda aconsejable potenciar uno en espa\u00f1ol como KumbiaPHP.<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Al hablar de c\u00f3digo web, el lenguaje de scripting PHP es el m\u00e1s famoso del mundo, debido a muchas razones, pero principalmente por su amplia flexibilidad y simpleza. Pero en ocasiones, la codificaci\u00f3n PHP puede volverse bastante mon\u00f3tona y repetitiva. Generaci\u00f3n de c\u00f3digo enrevesado y no testado por falta de tiempo, es en esas ocasiones cuando nos resultar\u00e1 \u00fatil un framework PHP. Los frameworks PHP hacen mucho m\u00e1s din\u00e1mico y r\u00e1pido el desarrollo de aplicaciones web escritas en PHP, poniendo a nuestra disposici\u00f3n estructuras b\u00e1sicas mediante las cuales construir las aplicaciones. En otras palabras, los frameworks ayudan a promover el r\u00e1pido desarrollo de aplicaciones (R.A.D.), y reducen la cantidad de c\u00f3digo repetitivo para los desarrolladores.<\/p>\n","protected":false},"author":1,"featured_media":555,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[67,667,44],"class_list":["post-551","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","tag-framework","tag-php","tag-programacion-2"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=551"}],"version-history":[{"count":13,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/551\/revisions"}],"predecessor-version":[{"id":566,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/551\/revisions\/566"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/555"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}