{"id":2676,"date":"2022-09-10T18:34:02","date_gmt":"2022-09-10T17:34:02","guid":{"rendered":"https:\/\/kumbiaphp.com\/blog\/?p=2676"},"modified":"2022-09-10T18:34:04","modified_gmt":"2022-09-10T17:34:04","slug":"crear-modelos-de-forma-correcta","status":"publish","type":"post","link":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/","title":{"rendered":"C\u00f3mo crear modelos de forma correcta"},"content":{"rendered":"\n<p>Bienvenidos a este post que trata sobre el c\u00f3mo crear modelos de forma correcta para aplicaciones que utilizan el patr\u00f3n de dise\u00f1o MVC: Modelo, Vista, Controlador.<\/p>\n<p>Una parte importante del trabajo dentro de un Framework MVC es el buen uso de los Modelos.\u00a0<\/p>\n<p>El modelo es <strong>responsable de mantener el estado de la aplicaci\u00f3n<\/strong>. A veces este estado es transitorio, y dura s\u00f3lo un par de interacciones con el usuario. Otras veces el estado es permanente y se almacena fuera de la aplicaci\u00f3n, a menudo en una base de datos.<\/p>\n<p>Un modelo es algo m\u00e1s que datos; impone todas las reglas de negocio que se aplican a esos datos. Por ejemplo, si un descuento no debe aplicarse a los pedidos de menos de de 20 euros, el modelo aplicar\u00e1 la restricci\u00f3n. Esto tiene sentido; al poner la implementaci\u00f3n de estas reglas de negocio en el modelo, nos aseguramos de que nada m\u00e1s en la aplicaci\u00f3n puede hacer que nuestros datos <strong>no sean v\u00e1lidos<\/strong>. El modelo act\u00faa como tanto un <strong>guardi\u00e1n<\/strong> como un <strong>almac\u00e9n de datos<\/strong>.<\/p>\n<p><!--more--><\/p>\n<p>Otra definici\u00f3n para el modelo es la <a href=\"https:\/\/en.wikipedia.org\/wiki\/Model%E2%80%93view%E2%80%93controller\" target=\"_blank\" rel=\"noopener\">siguiente<\/a>: es el componente central del patr\u00f3n (MVC). Es la estructura de datos din\u00e1mica de la aplicaci\u00f3n, independiente de la interfaz de usuario. Gestiona directamente los datos, la l\u00f3gica y las reglas de la aplicaci\u00f3n.<\/p>\n<p>En muchos casos, especialmente cuando uno comienza a trabajar en MVC, se cree que los modelos son <strong>\u00fanicamente<\/strong> para la gesti\u00f3n de la persistencia y la consulta de los datos de una base de datos (o de un repositorio)<\/p>\n<h2>Fundamentos<\/h2>\n<p>Antes de ahondar en los ejemplos y en los errores cl\u00e1sicos, nos gustar\u00eda mostrarte una imagen que puede ser de ayuda respecto de la forma en la que deber\u00edamos construir nuestras aplicaciones usando el patr\u00f3n descrito por <strong>Trygve Reenskaug<\/strong> (MVC)<\/p>\n<p>\u00a0<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2022\/06\/UrtaH.png\"><img loading=\"lazy\" decoding=\"async\" width=\"596\" height=\"232\" src=\"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2022\/06\/UrtaH.png\" alt=\"comparaci\u00f3n entre mala y buena implementaci\u00f3n de modelos en mvc\" class=\"wp-image-2678\" srcset=\"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2022\/06\/UrtaH.png 596w, https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2022\/06\/UrtaH-300x117.png 300w\" sizes=\"auto, (max-width: 596px) 100vw, 596px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>La imagen, que es gentileza del Framework CakePHP, nos indica que una aplicaci\u00f3n mal dise\u00f1ada (Bad cake) tiene mucho c\u00f3digo en los controladores y poco en las vistas y modelos. En la pr\u00e1ctica, los controladores deber\u00edan servirnos principalmente para gestionar el Routing (las urls), interactuar con los modelos y despachar las vistas. En contraposici\u00f3n, una buena implementaci\u00f3n (Good cake), deber\u00eda contener m\u00e1s c\u00f3digo en los modelos y menos en las vistas y controladores.<\/p>\n<p>Volvamos un poco a lo que se mencionaba sobre el problema de los reci\u00e9n iniciados en MVC. Si bien es com\u00fan que un modelo gestione datos de una base de datos, tambi\u00e9n sirve para gestionar \u00abcosas\u00bb que no tienen relaci\u00f3n con ello. Un ejemplo puede ser un modelo para un carro de compras. Es completamente factible llevar a cabo esta tarea sin persistencia en el DBMS (Database Management System). Bastar\u00eda con hacerlo con el objeto de sesi\u00f3n. Por otro lado, un modelo tambi\u00e9n podr\u00eda encargarse de los pagos electr\u00f3nicos, y luego apoyarse de otro que persista datos. Un modelo podr\u00eda estar dedicado a la realizaci\u00f3n de c\u00e1lculos espec\u00edficos, otro del env\u00edo de notificaciones (SMS, Whatsapp, e-mail, etc), otro de la ejecuci\u00f3n de tareas por shell dentro del servidor, y as\u00ed sucesivamente.<\/p>\n<p><strong>\u00bfQu\u00e9 es lo m\u00e1s com\u00fan?<\/strong><\/p>\n<p>Que las personas definan un modelo heredando de la clase del ORM (Object Relational Mapping) y, por ejemplo, en el caso de las notificaciones o el carro de compras, bastar\u00eda con que se utilizara una clase simple.<\/p>\n<p>Vale, que a\u00fan no hay ejemplos porque nos quedan algunos <strong>fundamentos<\/strong> que debemos considerar.<\/p>\n<h3>DRY<\/h3>\n<p>Para muchos desconocido por sus siglas, pero viene del ingl\u00e9s <strong>Don&#8217;t Repeat Yourself<\/strong>. En buen castellano ser\u00eda \u00abNo te repitas\u00bb. \u00bfQu\u00e9 significa esto? Significa que debemos gestionar cada \u00abtrozo de c\u00f3digo\u00bb a su labor respectiva, en un \u00fanico lugar. \u00bfY qu\u00e9 tiene de malo copiar y pegar c\u00f3digo? Cuando uno tiene mucho c\u00f3digo repetido se rompe el principio DRY.<\/p>\n<p>La repetici\u00f3n puede ser principalmente por desconocimiento de las herramientas que provee el Framework, o la clase de la que uno hereda. Por lo tanto, <strong>haz tu tarea de estudiante<\/strong>: <em>revisa los m\u00e9todos, la documentaci\u00f3n y luego ponte manos a la obra para que <strong>no repitas cosas<\/strong> que ya est\u00e1n implementadas<\/em> (lo que com\u00fanmente llamamos reinventar la rueda)<\/p>\n<p>Una vez que no tengas ruedas repetidas, ver\u00e1s que realizar <strong>modificaciones<\/strong> ser\u00e1 una tarea sencilla, evitando as\u00ed la <strong>fragilidad<\/strong> del c\u00f3digo.<\/p>\n<h3>OOP<\/h3>\n<p>En t\u00e9rminos de Orientaci\u00f3n a Objetos, muchas veces no tenemos tan clara la diferencia entre el uso de la herencia, m\u00e9todos est\u00e1ticos y m\u00e9todos din\u00e1micos. Este tipo de temas los veremos en los ejemplos.<\/p>\n<h3>El ORM<\/h3>\n<p>Debemos familiarizarnos con la librer\u00eda que gestiona la persistencia y las consultas al motor de bases de datos, en especial sus m\u00e9todos, propiedades y los <strong>callbacks<\/strong>. En esto \u00faltimo quisiera detenerme un momento. Los callbacks son la analog\u00eda a lo que en un motor de base de datos se conoce como <strong>triggers<\/strong> (disparadores). Existen diferentes tipos de triggers, pero en generar se clasifican en los que se ejecutan <strong>antes<\/strong> de una acci\u00f3n y los que lo hacen <strong>despu\u00e9s<\/strong> (before y after respectivamente)<\/p>\n<p>El nuevo <a href=\"https:\/\/github.com\/KumbiaPHP\/ActiveRecord\" target=\"_blank\" rel=\"noopener\"><strong>LiteRecord<\/strong><\/a> implementa callbacks para las acciones de creaci\u00f3n (_beforeCreate, _afterCreate), para actualizaci\u00f3n (_beforeUpdate, _afterUpdate) y para guardar (_beforeSave, _afterSave)<\/p>\n<p>En palabras simples, si el modelo encuentra un m\u00e9todo _beforeAlgo, ejecutar\u00e1 dicha funci\u00f3n antes de que se ejecute el m\u00e9todo \u00abAlgo\u00bb (asumiendo que \u00abAlgo\u00bb puede ser Create, Save, Update). Por otro lado un _afterAlgo, se ejecutar\u00e1 luego que la funci\u00f3n \u00abAlgo\u00bb haya finalizado.<\/p>\n<p>Estos temas tambi\u00e9n los iremos tratando con casos cotidianos. Puedes checar su documentaci\u00f3n en este <a href=\"https:\/\/github.com\/KumbiaPHP\/ActiveRecord\/blob\/master\/LiteRecord.php\" target=\"_blank\" rel=\"noopener\">enlace<\/a>.<\/p>\n<h3>Traits\u00a0<\/h3>\n<p>Desde la versi\u00f3n de PHP 5.4 se implementan los <a href=\"https:\/\/www.php.net\/manual\/es\/language.oop5.traits.php\" target=\"_blank\" rel=\"noopener\">Traits<\/a> (rasgos, caracter\u00edsticas) Es una buena estrategia para continuar con el principio DRY. De pronto tienes propiedades o m\u00e9todos que son compartidos entre diferentes clases. Puedes extraer esos m\u00e9todos en un trait y luego indicar que la clase implementa dichos \u00abrasgos\u00bb. As\u00ed tendr\u00e1s un \u00fanico lugar para ellos y finalmente, si hay menos c\u00f3digo \u00abinnecesario o repetitivo\u00bb, habr\u00e1 menos errores y ser\u00e1 m\u00e1s f\u00e1cil de hacer mantenci\u00f3n\/correcci\u00f3n del mismo.<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":18,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9],"tags":[],"class_list":["post-2676","post","type-post","status-publish","format-standard","hentry","category-tutoriales-y-screencast"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C\u00f3mo crear modelos de forma correcta - KumbiaPHP Framework PHP en espa\u00f1ol<\/title>\n<meta name=\"description\" content=\"Tutorial de apoyo en recomendaciones sobre el uso de modelos dentro de un framework que implementa el patr\u00f3n de dise\u00f1o MVC\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo crear modelos de forma correcta - KumbiaPHP Framework PHP en espa\u00f1ol\" \/>\n<meta property=\"og:description\" content=\"Tutorial de apoyo en recomendaciones sobre el uso de modelos dentro de un framework que implementa el patr\u00f3n de dise\u00f1o MVC\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/\" \/>\n<meta property=\"og:site_name\" content=\"KumbiaPHP Framework PHP en espa\u00f1ol\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kumbia.fw\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-10T17:34:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-10T17:34:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2022\/06\/UrtaH.png\" \/>\n<meta name=\"author\" content=\"Nelson Rojas\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nelson955443098\" \/>\n<meta name=\"twitter:site\" content=\"@kumbiaphp\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nelson Rojas\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/\"},\"author\":{\"name\":\"Nelson Rojas\",\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/#\\\/schema\\\/person\\\/f321b5debe6a875d1d1d1154e4502ffb\"},\"headline\":\"C\u00f3mo crear modelos de forma correcta\",\"datePublished\":\"2022-09-10T17:34:02+00:00\",\"dateModified\":\"2022-09-10T17:34:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/\"},\"wordCount\":1077,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/UrtaH.png\",\"articleSection\":[\"Tutoriales y screencast\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/\",\"url\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/\",\"name\":\"C\u00f3mo crear modelos de forma correcta - KumbiaPHP Framework PHP en espa\u00f1ol\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/UrtaH.png\",\"datePublished\":\"2022-09-10T17:34:02+00:00\",\"dateModified\":\"2022-09-10T17:34:04+00:00\",\"description\":\"Tutorial de apoyo en recomendaciones sobre el uso de modelos dentro de un framework que implementa el patr\u00f3n de dise\u00f1o MVC\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/#primaryimage\",\"url\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/UrtaH.png\",\"contentUrl\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/UrtaH.png\",\"width\":596,\"height\":232},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/2022\\\/09\\\/10\\\/crear-modelos-de-forma-correcta\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C\u00f3mo crear modelos de forma correcta\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/\",\"name\":\"KumbiaPHP Framework PHP en espa\u00f1ol\",\"description\":\"Web &amp; app MVC PHP framework\",\"publisher\":{\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/#organization\",\"name\":\"KumbiaPHP Framework PHP en espa\u00f1ol\",\"url\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/logo.png\",\"contentUrl\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/logo.png\",\"width\":432,\"height\":50,\"caption\":\"KumbiaPHP Framework PHP en espa\u00f1ol\"},\"image\":{\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/kumbia.fw\",\"https:\\\/\\\/x.com\\\/kumbiaphp\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/#\\\/schema\\\/person\\\/f321b5debe6a875d1d1d1154e4502ffb\",\"name\":\"Nelson Rojas\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/35b46624735bd8094a5aaef0242fe02dbe01451b909a85608578c09417e38478?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/35b46624735bd8094a5aaef0242fe02dbe01451b909a85608578c09417e38478?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/35b46624735bd8094a5aaef0242fe02dbe01451b909a85608578c09417e38478?s=96&d=mm&r=g\",\"caption\":\"Nelson Rojas\"},\"description\":\"Especialista en c\u00f3digo de programaci\u00f3n y bases de datos, uso de herramientas Open Source, conferencista ocasional.\",\"sameAs\":[\"http:\\\/\\\/nelsonrojas.wordpress.com\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/nelson-rojas-nu\u00f1ez-888a60239\\\/\",\"https:\\\/\\\/x.com\\\/nelson955443098\",\"https:\\\/\\\/www.youtube.com\\\/@nelsonrojasnunez\"],\"url\":\"https:\\\/\\\/kumbiaphp.com\\\/blog\\\/author\\\/nelson-rojas\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C\u00f3mo crear modelos de forma correcta - KumbiaPHP Framework PHP en espa\u00f1ol","description":"Tutorial de apoyo en recomendaciones sobre el uso de modelos dentro de un framework que implementa el patr\u00f3n de dise\u00f1o MVC","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo crear modelos de forma correcta - KumbiaPHP Framework PHP en espa\u00f1ol","og_description":"Tutorial de apoyo en recomendaciones sobre el uso de modelos dentro de un framework que implementa el patr\u00f3n de dise\u00f1o MVC","og_url":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/","og_site_name":"KumbiaPHP Framework PHP en espa\u00f1ol","article_publisher":"https:\/\/www.facebook.com\/kumbia.fw","article_published_time":"2022-09-10T17:34:02+00:00","article_modified_time":"2022-09-10T17:34:04+00:00","og_image":[{"url":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2022\/06\/UrtaH.png","type":"","width":"","height":""}],"author":"Nelson Rojas","twitter_card":"summary_large_image","twitter_creator":"@nelson955443098","twitter_site":"@kumbiaphp","twitter_misc":{"Escrito por":"Nelson Rojas","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/#article","isPartOf":{"@id":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/"},"author":{"name":"Nelson Rojas","@id":"https:\/\/kumbiaphp.com\/blog\/#\/schema\/person\/f321b5debe6a875d1d1d1154e4502ffb"},"headline":"C\u00f3mo crear modelos de forma correcta","datePublished":"2022-09-10T17:34:02+00:00","dateModified":"2022-09-10T17:34:04+00:00","mainEntityOfPage":{"@id":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/"},"wordCount":1077,"commentCount":2,"publisher":{"@id":"https:\/\/kumbiaphp.com\/blog\/#organization"},"image":{"@id":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/#primaryimage"},"thumbnailUrl":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2022\/06\/UrtaH.png","articleSection":["Tutoriales y screencast"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/","url":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/","name":"C\u00f3mo crear modelos de forma correcta - KumbiaPHP Framework PHP en espa\u00f1ol","isPartOf":{"@id":"https:\/\/kumbiaphp.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/#primaryimage"},"image":{"@id":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/#primaryimage"},"thumbnailUrl":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2022\/06\/UrtaH.png","datePublished":"2022-09-10T17:34:02+00:00","dateModified":"2022-09-10T17:34:04+00:00","description":"Tutorial de apoyo en recomendaciones sobre el uso de modelos dentro de un framework que implementa el patr\u00f3n de dise\u00f1o MVC","breadcrumb":{"@id":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/#primaryimage","url":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2022\/06\/UrtaH.png","contentUrl":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2022\/06\/UrtaH.png","width":596,"height":232},{"@type":"BreadcrumbList","@id":"https:\/\/kumbiaphp.com\/blog\/2022\/09\/10\/crear-modelos-de-forma-correcta\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/kumbiaphp.com\/blog\/"},{"@type":"ListItem","position":2,"name":"C\u00f3mo crear modelos de forma correcta"}]},{"@type":"WebSite","@id":"https:\/\/kumbiaphp.com\/blog\/#website","url":"https:\/\/kumbiaphp.com\/blog\/","name":"KumbiaPHP Framework PHP en espa\u00f1ol","description":"Web &amp; app MVC PHP framework","publisher":{"@id":"https:\/\/kumbiaphp.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kumbiaphp.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kumbiaphp.com\/blog\/#organization","name":"KumbiaPHP Framework PHP en espa\u00f1ol","url":"https:\/\/kumbiaphp.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kumbiaphp.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2015\/02\/logo.png","contentUrl":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2015\/02\/logo.png","width":432,"height":50,"caption":"KumbiaPHP Framework PHP en espa\u00f1ol"},"image":{"@id":"https:\/\/kumbiaphp.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kumbia.fw","https:\/\/x.com\/kumbiaphp"]},{"@type":"Person","@id":"https:\/\/kumbiaphp.com\/blog\/#\/schema\/person\/f321b5debe6a875d1d1d1154e4502ffb","name":"Nelson Rojas","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/35b46624735bd8094a5aaef0242fe02dbe01451b909a85608578c09417e38478?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/35b46624735bd8094a5aaef0242fe02dbe01451b909a85608578c09417e38478?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/35b46624735bd8094a5aaef0242fe02dbe01451b909a85608578c09417e38478?s=96&d=mm&r=g","caption":"Nelson Rojas"},"description":"Especialista en c\u00f3digo de programaci\u00f3n y bases de datos, uso de herramientas Open Source, conferencista ocasional.","sameAs":["http:\/\/nelsonrojas.wordpress.com","https:\/\/www.linkedin.com\/in\/nelson-rojas-nu\u00f1ez-888a60239\/","https:\/\/x.com\/nelson955443098","https:\/\/www.youtube.com\/@nelsonrojasnunez"],"url":"https:\/\/kumbiaphp.com\/blog\/author\/nelson-rojas\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/posts\/2676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/comments?post=2676"}],"version-history":[{"count":14,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/posts\/2676\/revisions"}],"predecessor-version":[{"id":2769,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/posts\/2676\/revisions\/2769"}],"wp:attachment":[{"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/media?parent=2676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/categories?post=2676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/tags?post=2676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}