Я прочитал много подобных вопросов, они могут показаться дублирующими, но никто не спрашивает точно, что я прошу, и что более важно: ни у кого нет 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» в вспомогательном файле со статическими методами для управления всеми глобальными переменными для моего приложения. Вот что я имею:
<?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['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';