Rimorsoft Online
Blog Foro

Constantes en PHP


Es muy común usar constantes en nuestro sistema, recuerdo que uso mucho la constante NUM_LATEST para que sirva como parámetro al momento de usar el método ->take(). Básicamente, trabajo con algo así ->take(NUM_LATEST) al consultar usuarios, artículos, comentarios, etc.

Una constante es una "variable" que no está pensada para cambiar, por eso no es variable, su valor no varía es constante. Es exacta su definición ¿cierto?.

En Laravel el método ->take() devuelve una nueva colección de datos con el número especificado, es decir: Trae 3, 4 o los elementos que se necesiten.

Constantes definidas

Hay valores que no deben cambiar, probablemente el email del desarrollador en un sistema para que lleguen allí los errores. Hay muchos ejemplos sobre el tema en libros y tutoriales con PI, yo no te lo explico así porque en todos los años que llevo desarrollado nunca he usado constante PI define('PI', 3.1416);.

  • Las constantes usadas fuera de una clase (globales) se definen de la siguiente manera, define('EMAIL', '[email protected]');.
  • Observa que usamos define().
  • El nombre de la constante es el primer parámetro y el segundo es su valor.

Las constantes se escriben en mayúsculas, deben usar guiones bajos para no colocar espacios y no llevan el signo $.

Se considera que el uso de constantes globales es una mala práctica, y si lo es... Es así principalmente por el uso excesivo que se le da, muchos programadores resuelven las cosas con técnicas globales (constantes, variables, variables de sesión, etc) y es eso lo que está mal.

Revisando a Laravel solo encontré dos constantes globales:

  1. define('LARAVEL_START', microtime(true));.
  2. define('ARTISAN_BINARY', 'artisan');

¿esto nos da algún mensaje?.. Usa constantes globales solo si es muy necesario.

Constantes en las clases

Este es el uso común y correcto en todo sistema... Las constantes en las clases permiten definir un valor y tenerlo sin cambio durante la ejecución del sistema. Es la misma teoría anterior pero dentro de una clase.

Para declararla usamos const y quedaría de la siguiente manera const NUM_LATEST = 3;. En una clase se vería así:

<?php

namespace Rimorsoft\Http\Controllers;

use Illuminate\Http\Request;

class PageController extends Controller
{
    const NUM_LATEST = 3;

    public function home()
    {
        // ...
    }

    // ...
}

Algo mas sobre las constantes en PHP

Debemos pensar bien al momento de crear variables, es decir, pensar en su propósito ¿propablemente su valor cambiará?. Usa las constantes cuando tenga un real sentido, así protegerás la funcionalidad del sistema.

Algunas cosas para recordar:

  • Puedes crear tantas constantes como vayas necesitando.
  • No pueden cambiar, y no cambiarán.
  • No se declaran usando el signo $.
  • Se escriben en mayúsculas.
  • Evita crear constantes globales.
Libro de TDD - Lo que debes saber
Compra el libro
TDD lo que debes saber

Newsletter

Únete a más de 4.000+ personas y no te pierdas nunca más de las nuevas clases, tips, tutoriales y más cada semana.

    No enviamos spam. Puedes darte de baja en cualquier momento.