Constantes en PHP

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', 'i@italomoralesf.com');.
  • 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... Se considera 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)); y (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.

Adquiere en preventa y aprovecha un gran descuento TDD en Laravel

Comparte en

Creado por: Venezuela Italo Morales

Profesor de #Laravel y #PHP en Rimorsoft Online

Más información


Spatie/Laravel Permission ¿Cómo agregar campos en la tabla "roles"?

Hola, mi consulta es la siguiente:

Relacioné la tabla "roles" con mi tabla** "empresa**", es decir, en la tabla "roles", tengo el campo "id_empresa", en la vista, están los campos necesarios y el select de la empresa pero al querer guardar los datos, me arroja el siguiente error: ** "The given role or permission should use guard web instead of Empresas. "** No ...

SOFTWARE PARA CONSULTORIOS MEDICOS

Hola Amigos. soy nuevo en el grupo.. me gustaria saber si alguien tiene o tuvo algun proyecto basado en laravel, para consultorios medicos? ...

sincronización de componentes hermanos

un gran saludo a la comunidad rimorsorf... espero de su valiosa ayuda para mi problema que es el siguiente:

tengo dos componentes en el mismo nivel, el primero crea una tabla con una lista de procesos por tramitar y el segundo componente lista en una tabla los procesos que se han asignado para tramitar; cuando en la primera tabla se asigna el proceso este debe desaparecer de...

plantilla blade y vuejs2

buenas noches comunidad, por casualidad alguien sabrá si se puede integrar la plantilla de laravel blade en vuejs2 component??, gracias dee antemano...