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


El auth de laravel trabaja con $_SESSION?.

el auth de laravel trabaja basado en tokens o con el objeto session de php ...

Rutas de Laravel no funcionan

Buenas a todos, tengo un problema, ultimamente, cada vez que creo un nuevo proyecto de Laravel las rutas de este no funcionan. Por ejemplo: si creo el proyecto, éste se crea, pero al agregarle el sistema de autenticación: "auth" se generan tanto las rutas en el archivo web.php y las vistas. pero si intento acceder a la sección de registro o inicio de sesión me aparece el e...

form request ajax laravel (Mostrar error de validación de formulario con ajax)

Hola, tengo una consulta por hacer. Quisiera conocer sus opiniones, sobre como mostrar los errores de validación con ajax cuando utlizo la clase Form Request. Debo decir que el mensaje de registrado con éxito si lo muestra, sin embargo los mensajes de error no los he podido mostrar. Gracias

//FORM REQUEST


public function rules()
    {
        return [
     ...

Select Dinámico

Hola buenas a todos estoy trabajando en un sistema en el cuál, en un formulario tengo un select para seleccionar datos de una tabla, y en la vista del formulario me funciona ya que me carga todos los datos que tengo almacenados en dicha tabla; pero cuando selecciono una de las opciones, sea cual séa la que seleccione, siempre se guarda el primer registro de la tabla... Es com...