Code Igniter – лучшее место для объявления глобальной переменной

Я прочитал много подобных вопросов, они могут показаться дублирующими, но никто не спрашивает точно, что я прошу, и что более важно: ни у кого нет ANSWER, который я ищу!

Это очень просто: я просто хочу использовать $variable в нескольких местах: не только виды и контроллеры, но также и в routes.php и других конфигурационных файлах.

Я не хочу таких вещей: используйте класс Config для загрузки файлов конфигурации; использовать CI's get_instance и т. д.

Я просто хочу объявить заданную $variable (она может быть константой, но мне она нужна как переменная) и использовать ее абсолютно везде.

На самом деле … Я хотел бы знать, какой PHP-файл в начальной загрузке CI является одним из первых, который будет разбираться, поэтому я мог бы представить свою глобальную переменную там … но не ядро ​​/ систему или файл с несогласованным, но «лучшее» место для этого простого требования.

Спасибо.

Существует файл в /application/config называемый constants.php

Я, как правило, размещаю все мое там с комментарием, чтобы легко увидеть, где они находятся:

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

После загрузки index.php он загружает файл /core/CodeIgniter.php , который затем, в свою очередь, загружает файл общих функций /core/Common.php а затем /application/constants.php поэтому в цепочке вещей это четвертый файл для загрузки.

Я использую класс «Globals» в вспомогательном файле со статическими методами для управления всеми глобальными переменными для моего приложения. Вот что я имею:

globals_helper.php (в каталоге помощников)

 <?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; } } 

Затем выполните автозагрузку в файле autoload.php

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

Наконец, для использования из любого места в коде вы можете сделать это, чтобы установить переменные:

 Globals::setAuthenticatedMemeberId('somememberid'); 

И это, чтобы прочитать это:

 Globals::authenticatedMemeberId() 

Примечание. Причина, по которой я оставил вызовы инициализации в классе Globals, состоит в том, чтобы иметь возможность расширения в будущем с инициализаторами для класса, если это необходимо. Вы также можете сделать свойства общедоступными, если вам не нужен какой-либо контроль над тем, что будет установлено и прочитано через сеттеры / геттеры.

Вы также можете создать файл constants_helper.php и поместить туда свои переменные. Пример:

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

Затем на вашем приложении / config / autoload.php автоматически загрузите помощника ваших сторонников

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

внутри файла application / conf / contants.php:

 global $myVAR; $myVAR= 'http://'.$_SERVER["HTTP_HOST"].'/'; 

и помещать в некоторый заголовочный файл или внутри любой функции:

 global $myVAR; $myVAR= 'some value'; 

Лучшим местом для объявления global variable в codeigniter является файл constants.php в каталоге /application/config

Вы можете определить глобальную переменную следующим образом

 /** * Custom definitions */ define('first_custom_variable', 'thisisit'); $yourglobalvariable = 'thisisimyglobalvariable';