Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

Crear Código Limpio en PHP

Hay una cantidad bastante grande de herramientas para crear código limpio PHP de hecho la gente tiende a quejarse de que el código no es limpio debido a el código embebido en HTML.

El código embebido en HTML se ve mucho en PHP si, se puede hacer mucho mas claro el código separando ambas cosas también, PHP permite hacer estas cosas y la gente tiende a abusar de ello.

PHP ofrece a sus programadores una gran cantidad de herramientas que les permiten hacer código realmente limpio si así lo desea entre estas herramientas tenemos:

  • funciones
  • clases
  • traits
  • Heredoc y Nowdoc
  • include, include_once, require, requrie_once and partial parts(components)
  • enrutamiento
  • composer
  • third party templates como puede ser blade.
  • MVC architectural design pattern
  • Frameworks
  • otras

Por lo que tenemos un montón de cosas que podemos hacer para mejorar.

Heredoc

es una lastima que no se utiliza heredoc nunca he visto a alguien utilizándolo, de hecho la primera vez que use heredoc fue al crear el témplate de este blog

Con PHP podemos hacer algo como lo que sigue:

Y al final de todo esto hacemos un echo para que quede en pantalla. Veamos un ejemplo mas elaborado:

En ele siguiente ejemplo he utilizado Bootstrap para la pagina de una manera mas rápida y que tenga algo de estilo.

Este sera nuestro main.php para que tenga una idea del poder que tenemos con heredoc:

main.php
//blastcoding.com
<?php

//preprocess variables and code
$title = "This is my main text";
$main_text ="Phasellus non ornare justo. Duis vulputate ipsum ac malesuada ornare. Nunc faucibus quam vitae gravida efficitur. Quisque quis justo in nunc maximus ultricies. Quisque nec sagittis turpis. Sed ultricies sed lacus et aliquet. Sed dictum pretium neque et facilisis. Praesent eget diam eu odio imperdiet consectetur vitae a leo. In ullamcorper dolor vel fermentum convallis. Donec rhoncus tempus finibus. Aenean lectus lorem, interdum vitae accumsan sit amet, facilisis at augue. Donec suscipit feugiat mi a fermentum. Nam quis felis sit amet est euismod lacinia eu a enim. Sed sed ligula urna.";

//template
$main =<<<HTML
<div class="container">
    <div class="row">
        <div class="col-8">
            <main>
                <h1>$title</h1>
                <p>
                $main_text
                </p>
            </main>
        </div>
        <div class="col-4">

        </div>
    </div>
</div>
HTML;

//render
echo $main;

Como puede ver en nuestro heredoc utilizamos el termino <<<HTML en su inicio y HTML; en su final aunque el nombre que le demos no debería hacer la gran diferencia si la hace en el IDE por ejemplo yo utilizo visual studio code cuando usamos el close tag y end tag con nombre HTML este ide trata como si fuera HTML y por tanto colorea toda la sintaxis HTML excepto las variables PHP

utilizando heredoc con tag <<<HTML

Puedes ver mas de heredoc en https://blastcoding.com/php-heredoc-y-nowdoc/

Invoked immediately functions

Las funciones que corren inmediatamente pueden ser de gran ayuda en PHP, esto me di cuenta al crear el tema de WordPress que se está usando actualmente en el blog. Recordemos el tema anterior de usar Heredoc, ese tema tiene un pequeño problema y es que estamos utilizando variables que talvez puedan pisar otras.

Aquí es donde entra la invoked immediately functions, supongamos que venimos de otra página la cual le pasa los datos como un array a nuestra vista o plantilla como le queramos decir, podemos hacer que una función que corra inmediatamente reciba por parámetro esta data.

Dentro de la función podremos crear variables que hagan el pre-proceso antes de utilizarlas en plantilla

por ejemplo:

Invoked immediately function reciviendo datos
$se= "lateral goes here";
(function() use($se){
//preprocess variables and code
$title = "This is my main text";
$main_text ="Phasellus non ornare justo. Duis vulputate ipsum ac malesuada ornare. Nunc faucibus quam vitae gravida efficitur. Quisque quis justo in nunc maximus ultricies. Quisque nec sagittis turpis. Sed ultricies sed lacus et aliquet. Sed dictum pretium neque et facilisis. Praesent eget diam eu odio imperdiet consectetur vitae a leo. In ullamcorper dolor vel fermentum convallis. Donec rhoncus tempus finibus. Aenean lectus lorem, interdum vitae accumsan sit amet, facilisis at augue. Donec suscipit feugiat mi a fermentum. Nam quis felis sit amet est euismod lacinia eu a enim. Sed sed ligula urna.";

//template
$main =<<<HTML
<div class="container">
    <div class="row">
        <div class="col-8">
            <main>
                <h1>$title</h1>
                <p>
                $main_text
                </p>
            </main>
        </div>
        <div class="col-4">
            $se
        </div>
    </div>
</div>
HTML;

//render
echo $main;
})();

Por ejemplo, puedes utilizar esto en Codeigniter, esto es más rápido que usar un Template y también es más rápido que entrar a abrir y cerrar PHP como desquiciado.

Componentes(Partial parts)

PHP nos brinda una cantidad de herramientas para incluir código dentro de otro estas son include, include_once, require, require_once.

Es buena idea separar tanto header como footer y otras partes de la pagina para que estas sean mas fáciles de abordar.

de esta manera tendremos una carpeta que sea partials, components o parts la cual tendran fragmentos de la pagina. Ademas que las secciones esten separadas hace que las diferentes partes visuales de nuestro proyecto sean mas faciles de cambiar.

No tiene sentido tener una parte que se repite constantemente, simplemente créala he inclúyela en como parte de la view.

Por ejemplo supongamos que nuestro index.php podria ser de la siguiente manera:

index.php
<!doctype html>
<html lang="EN">
    <head>
      <?php require_once("partials/head.php"); ?>
    </head>
    <body>
      <?php
        require_once("partials/header.php");
        require_once("partials/main.php");
        require_once("partials/footer.php");
        require_once("partials/scripts.php");
      ?>
    </body>
</html>

Si vemos bien tenemos los fragmentos de código que formaran parte de index en la carpeta partials, de esta manera, por ejemplo si nos piden que tenemos que tener por ejemplo el header distinto vamos y modificamos el header.php.

Esto en un proyecto grande seria una vista y no un index.php, en un proyecto grande lo que utilizaríamos seria un patrón de diseño MVC que es lo que veremos a continuación de forma rápida.

Puedes ver mas sobre include y require en https://blastcoding.com/include-y-require-en-php/

MVC

Otra forma de hacer nuestro código mas limpio en PHP es utilizar el patrón de diseño MVC.

El patrón de diseño MVC, explicado en simples palabras es una forma de dividir nuestro código en 3 partes la vista que es lo que le mostraremos al usuario, el modelo que se comunicara con nuestra base y el controller que es el que se encargara de llamar a la vista y hacer preprocesos antes de enviar información al modelo.

si quiere verlo de una forma mas formal aqui tiene la definicion que se nos da en wikipedia:

Modelo-vista-controlador (MVC) es un patrón de arquitectura de software, que separa los datos y principalmente lo que es la lógica de negocio de una aplicación de su representación y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la construcción de tres componentes distintos que son el modelo, la vista y el controlador; es decir: por un lado define componentes para la representación de la información y, por otro lado, para la interacción del usuario.

wikipedia.com

Por lo general en nuestro proyecto estara dividido en 3 carpetas que seran las principales, un index.php y utilizaremos composer para utilizar autoload para simplificar las cosas.

También dentro del MVC podríamos tener encuentra un enrutamiento dentro de el archivo index.php

La estructura de un MVC moderno generalmente sera tal cual la imagen anterior el enrutamiento desde index.php se utiliza en muchos frameworks, laravel, codeigniter, otros e incluso en CMS como WordPress.

Por lo generalo lo principal para empezar a hacer un proyecto MVC desde cero seran

  • src(non public folder)
    • models
      • users.php(class)
      • products.php(class)
    • views
      • components(partials)
      • user.php
      • register.php
      • login.php
      • products.php
    • controllers
      • UserController.php(class)
      • ProductController.php(class)
    • index.php(silence)
  • public(the public folder)
  • vendor
  • composer.json
  • index.php(enrutamiento)

En general nuestro proyecto estaría conformado algo parecido a lo anterior expuesto

Frameworks

Actualmente Utilizaríamos algún framework de PHP para simplificar el proceso de hacer un MVC desde 0, algunos de los frameworks que podrias utilizar son Laravel, Symfony, CodeIgniter, CakePHP, otros.

Laravel es el framework mas popular hoy día siguiéndolo Codeigniter de cerca, Symfony es un framework que puedes llegar a utilizar en webs grandes.

Yii2 es otro buen framework que podrias utilizar

Conclusión de Código limpio en PHP

En conclusión podemos sacar que tenemos bastantes formas de hacer que nuestro código sea mas limpio en PHP.

  • El patrón de diseño MVC nos ofrece una manera importante de separar la parte logica de lo visual. En este post no vimos como crear los controladores y models porque dependerá del framework que usted utilice o si usted crea desde 0
  • Heredoc es una herramienta bastante útil para separar nuestro PHP del codigo HTML
  • Separar nuestras vistas en varios componentes hace que el código sea mas fácil de manejar de esta manera podremos modificar partes de las vistas sin que estas sean un dolor de cabeza
  • El uso de Composer y de su autoload es casi que obligatorio hoy día de esta manera podremos utilizar de forma mejor el MVC.
  • Laravel es el framework mas popular hoy en dia
Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category