Saltar al contenido

CodeIgniter: el mejor lugar para declarar una variable global

Solución:

Hay un archivo en /application/config llamado constants.php

Normalmente pongo todos los míos allí con un comentario para ver fácilmente dónde están:

/**
 * Custom defines
 */
define('blah', 'hello mum!');
$myglobalvar="hey there";

Despues de ti index.php está cargado, carga el /core/CodeIgniter.php archivo, que a su vez carga el archivo de funciones comunes /core/Common.php y luego /application/constants.php así que en la cadena de cosas es el cuarto archivo a cargar.

Utilizo una clase “Globals” en un archivo auxiliar con métodos estáticos para administrar todas las variables globales de mi aplicación. Esto es lo que tengo:

globals_helper.php (en el directorio de ayudantes)

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

// Application specific global variables
class Globals
{
    private static $authenticatedMemberId = null;
    private static $initialized = false;

    private static function initialize()
    {
        if (self::$initialized)
            return;

        self::$authenticatedMemberId = null;
        self::$initialized = true;
    }

    public static function setAuthenticatedMemeberId($memberId)
    {
        self::initialize();
        self::$authenticatedMemberId = $memberId;
    }


    public static function authenticatedMemeberId()
    {
        self::initialize();
        return self::$authenticatedMemberId;
    }
}

Luego, cargue automáticamente esto en el archivo autoload.php

$autoload['helper'] = array('globals');

Por último, para su uso desde cualquier lugar dentro del código, puede hacer esto para configurar las variables:

Globals::setAuthenticatedMemeberId('somememberid');

Y esto para leerlo:

Globals::authenticatedMemeberId()

Nota: La razón por la que dejé las llamadas de inicialización en la clase Globals es tener capacidad de expansión futura con inicializadores para la clase si es necesario. También puede hacer públicas las propiedades si no necesita ningún tipo de control sobre lo que se configura y lee a través de los establecedores / captadores.

También puede crear un archivo constants_helper.php y luego poner sus variables allí. Ejemplo:

define('MY_CUSTOM_DIR', base_url().'custom_dir_folder/');

Luego, en su aplicación / config / autoload.php, cargue automáticamente su ayudante de contstants

$autoload['helper'] = array('contstants');
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *