Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Agregue poder a su PHP con aplicaciones de múltiples niveles

by
Difficulty:IntermediateLength:LongLanguages:

Spanish (Español) translation by Luis Chiabrera (you can also view the original English article)

A medida que las aplicaciones PHP se vuelven cada vez más complejas, puede ser fácil terminar con un enredo de código que hace que el mantenimiento sea casi imposible. La aplicación del concepto de aplicaciones escalonadas puede ayudar a aliviar algunas de las dificultades para mantener aplicaciones complejas.


¿Qué quieres decir con aplicaciones escalonadas?

La programación en niveles es la práctica de mantener diferentes componentes, ideas o idiomas separados unos de otros.
En el desarrollo de front-end, el marcado en niveles estaría usando hojas de estilo externas y JavaScript.

Example of tiered markup using external JavaScript and CSS

Al enlazar a un archivo CSS en lugar de incrustar estilos en su marca HTML, resulta más fácil cambiar el
formateo de sus sitios web porque ahora toda la información de estilo se almacena convenientemente en un lugar, separados
Desde el marcado del documento. Y varias páginas HTML pueden mostrar exactamente el mismo archivo CSS, todo su sitio
puede actualizarse en cuanto a estilo simplemente cambiando una línea de CSS.

En el desarrollo de back-end, se aplican las mismas reglas, pero estamos tratando con diferentes componentes. En términos generales, estamos
mirando tres niveles: la base de datos (almacenamiento y recuperación de datos), Business
(procesamiento y manejo de datos), y niveles de Presentación (cómo se muestran los datos).

¿Por qué debería importarme?

Make your functions plug and play by using tiered applications.

Puede que no sea inmediatamente obvio, pero separar sus aplicaciones en una estructura escalonada tendrá un enorme
impacto en la capacidad de su código para cambiar en el futuro. Por ejemplo, si tiene configurado un sistema de blogs, y
se hace necesario crear una fuente RSS para el blog, una aplicación con niveles adecuados le permitiría simplemente
configure una plantilla RSS y luego llame a la base de datos y las funciones empresariales que ya ha escrito.

En el extremo opuesto, si su cliente decidiera repentinamente que PostgreSQL era una mejor opción para su organización
que MySQL, solo tendría que volver a escribir las funciones de la base de datos, todo sin tocar el negocio o
Lógica de presentación de la aplicación.

En términos de reutilización, podría tener múltiples funcionalidades de base de datos (compatibles con MySQL, PostgreSQL y
Oracle, por ejemplo), que podría ser fácilmente colocado en nuevos despliegues de su aplicación usando solo unos pocos
líneas de código en un solo lugar, en lugar de editar varias líneas de su código en varias funciones.

La forma incorrecta

Para comenzar, tomemos una tarea bastante simple: extraer el título y el texto del cuerpo de una entrada de una base de datos,...
creando una versión abreviada de la entrada, y colocando los datos en el formato HTML, y repáselos
enteramente el camino equivocado. En el siguiente código, escribiremos una función para realizar todas nuestras
tareas:

Este código produce un marcado HTML a lo largo de estas líneas:

Aunque esto pueda parecer lógico, en realidad es realmente indeseable. Vamos a repasar lo que hace esto.
Codificar un enfoque menos que óptimo.

El problema con este enfoque

Lumping functions causes redundant code and difficult maintenance.

Pobre legibilidad: este código está diluido. Su finalidad, aunque documentada en los comentarios.
(mas o menos), es difícil de discernir. Si escribieras esto, luego volvías a eso en seis meses, no sería instantáneo
desactive lo que estaba sucediendo, lo que significa unos pocos segundos / minutos perdidos al intentar interpretar su propio código.

Demasiado estrecho en el enfoque: esta función está paralizada por su especificidad: la consulta de la base de datos solo funciona para un tipo de entrada;
la creación de vista previa de texto está codificada en la función; El formato es específico para el tipo de entrada.
being displayed. In order to create a slightly different implementation of this functionality, we'd be force cree una segunda función que se vea casi exactamente igual, incluso si todo lo que necesitábamos cambiar era el número de
palabras en la vista previa de texto.

Falta de escalabilidad: esto está bastante relacionado con la idea de tener un enfoque demasiado estrecho; Si queremos añadir más funcionalidad (como
como un enlace o una imagen), nuestra función será más grande y más difícil de administrar. Y que si queremos añadir.
¿Condiciones que afectan a cómo se visualiza una entrada? Es fácil ver cómo una programación como esta permite que el código
Rápidamente se vuelve extenso e inmanejable.

El gran problema: Lumping Database, Business y Display Logic

Este es el problema de barrido que está causando todos los problemas mencionados anteriormente.

Combinando los tres de nuestra lógica.
tipos, terminamos con un enredo de código estrecho, desordenado, difícil de administrar, casi imposible de reutilizar.

Imagine una aplicación donde cada tipo de pantalla (fuente RSS, vista previa de entrada, pantalla de entrada completa, etc.) fue construida con
una función como la anterior, con el acceso a la base de datos, la lógica de negocios y la lógica de presentación, todos escritos juntos.
Ahora imagine que hay nueve páginas en el sitio, todas las cuales tienen su propia pantalla de entrada y funciones de vista previa.

Incluso si asumimos que la aplicación es realmente simple y que solo hay dos funciones por página del sitio, todavía estamos
teniendo en cuenta casi veinte funciones que deberán actualizarse si se requieren cambios.

Mejorando el Código

Para mejorar el código anterior, repartiremos nuestros diferentes tipos de lógica en varias funciones. Si se hace correctamente, nosotros
debe terminar con un conjunto de funciones altamente reutilizables y fáciles de entender que se apilan para realizar una variedad de tareas.

Smaller, interchangeable functions allow for easy maintenance.

Para comenzar, planearemos la funcionalidad necesaria para tener una mejor idea de
cómo se debe construir:

  1. Recupere las columnas de entrada y título para una página dada de la tabla de "entradas" en la base de datos
  2. Acortar el cuerpo de la entrada a una vista previa de 25 palabras y agregar una elipsis
  3. Inserte los datos en las etiquetas HTML para mostrar en el navegador del usuario

Como puede ver, nuestro plan identifica claramente un nivel de base de datos, negocio y presentación. Podemos ahora
Escribir funciones para cumplir cada uno de estos pasos con relativa facilidad.

Paso 1: el nivel de la base de datos

Para obtener información de la base de datos, vamos a escribir una función muy simple. Fomentar la buena codificación.
práctica, voy a usar la extensión mysqli, pero
No voy a centrarme en cómo funciona. Si no lo está utilizando ya, le recomiendo que explore mysqli o un
extensión similar (es decir, PDO) para asegurar sus consultas de MySQL contra
ataques de inyección.

Así que saltemos directamente al código:

Si analiza lo que está haciendo esta función, estamos literalmente solicitando
dos columnas (título y entrada) de nuestra tabla (entradas), luego almacenando cada entrada
en una matriz asociativa multidimensional, que es el valor de retorno de la
función. Pasamos un parámetro, $page, para que podamos determinar en qué página estamos
agarrando información para. Al hacerlo, ahora hemos creado una función que funcionará
para cada página de nuestro sitio (siempre que tengan un campo de "título" y "entrada").

Tenga en cuenta que nuestra función no hace nada para manejar los datos; simplemente actúa
como mensajero, agarrando la información que solicitamos y transmitiéndola a cualquier
viene a continuación Esto es importante, porque si hiciera algo más, estaríamos en el
ámbito de la lógica empresarial.

¿Por qué es importante separar la lógica empresarial de la
base de datos lógica?

La respuesta corta es que permite la base de datos.
abstracción, lo que esencialmente significa que los datos podrían migrarse desde MySQL
en otro formato de base de datos, como PostgreSQL u Oracle, todos sin
cambiando las funciones de manejo de datos (nivel de negocios), ya que la salida
aún así simplemente ser una matriz asociativa multidimensional que contiene entradas con una
Título y columna de entrada, sin importar qué tipo de base de datos estamos usando.

Paso 2 — El Nivel de Negocios

Con los datos cargados en nuestra matriz, podemos comenzar a procesar la información para
satisfacer nuestros propósitos. En este ejemplo, estamos tratando de crear una vista previa de entrada. En
el primer ejemplo, la longitud de la vista previa fue codificada en la función,
Lo que decidimos es una mala práctica. En esta función, pasaremos dos parámetros.
a nuestro código: el texto a procesar y la cantidad de palabras que queremos mostrar como
nuestra vista previa

Comencemos mirando la función:

En la función anterior, simplemente verificamos que el número de palabras en el
la entrada es mayor que la cantidad de palabras que queremos mostrar en nuestra vista previa, luego
agregue palabras a la variable de $preview recién creada una a la vez hasta que lleguemos a nuestra
longitud de destino, momento en el que agregamos puntos suspensivos y devolvemos $ vista previa.

Al igual que en nuestro nivel de base de datos, mantenemos el código dentro de los límites de la
Nivel de negocios. Todo lo que estamos haciendo es crear una vista previa de texto; no hay
interacción con la base de datos, y no hay elementos de presentación como HTML
margen.

Paso 3 — El nivel de presentación

Finalmente, necesitamos mostrar los datos que hemos recuperado y procesado. Para nuestro
Para ello, lo mostraremos con un marcado HTML extremadamente simple:

La idea detrás de este código es simple: primero, cargue las entradas usando nuestro
función de la base de datos, luego recorra las entradas, acortando el texto de la entrada
usando nuestra función de vista previa y luego colocando la vista previa del título y la entrada en
marcado de presentación.

Ahora, para cambiar el diseño de las vistas previas de entrada, solo dos líneas de
HTML necesita ser ajustado. Esto es mucho menos confuso que el original
Función que maneja los tres niveles.

Reflexiones finales sobre la programación en niveles

Me gustaría señalar que el ejemplo anterior es muy básico y está destinado únicamente a
Demostrar el concepto de programación por niveles. La idea es que manteniendo el
diferentes tipos de lógica de programación separados, puede aumentar enormemente la
legibilidad y mantenibilidad de su código.

NOTA: Hay un gran artículo. en TheDailyWTF.com que discute el uso y mal uso del diseño de software en niveles, y
maravilloso comentario sobre el
Artículo que presenta diferentes opiniones. Las aplicaciones de múltiples niveles son extremadamente útiles, pero también fáciles de
malinterprete y complique en exceso, por lo tanto, recuerde planificar a fondo su software antes de construir para evitar causar
Más problemas de los que estás resolviendo.

¿Tiene alguna idea sobre las aplicaciones en niveles? ¿Qué pasos estás tomando para
maximizar la facilidad de mantenimiento y los cambios futuros en el código que escribe? Nos deja
Sépalo en los comentarios!

  • Suscríbase a la fuente RSS de NETTUTS para obtener más información y artículos de desarrollo web diarios.


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.