Куда я помещаю файл констант для Codeigniter (PHP)?

У меня есть список констант (я использую их в качестве перечисления), некоторые, определяют операторы, и некоторые - просто глобальные переменные.

Где я, предполагают для помещения их в платформу MVC, таким образом, я могу использовать их и для моей модели и для моего контроллера, который должен сослаться на нее?

Я не засунул бы его в config/constants.php, так как за исключением них не должны называть эта модель и контроллеры, которые используют его.

Редактирование 1: разъяснение

Чтобы быть точнее, у меня есть мой message_model модель и это имеют набор констант, в которых я нуждаюсь, которые хранятся в message_model_constants.php. Куда я должен поместить message_model_constants.php и есть ли способ включать его автоматически контроллером, который загружается message_model когда message_model не (и я не хочу, чтобы это было), автоматически загруженный.

Редактирование 2:

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

5
задан tereško 10 February 2013 в 14:19
поделиться

5 ответов

расширяя ответ Бреннана Новака, вы можете упростить свой код, загрузив файл конфигурации в конструктор модели. Таким образом, в контроллерах вам нужно будет загружать только модель, а все остальное будет сделано автоматически.

Модель

class Message_model extends Model {

    function __construct()
    {
        parent::Model();
        $this->load->config('message_model_constants');
    }
...
}

Контроллер

class Some_controller extends Controller {

    function __construct()
    {
        parent::Controller();
        $this->load->model('message_model');
    }
...
}

Как уже говорилось, ваши конфигурационные файлы должны быть application/config/message_model_constants.php

2
ответ дан 13 December 2019 в 19:21
поделиться

Перейдите в application / config / constants.php и определите свои константы, и вы можете использовать свои константы в Model-View-Controller CI, не включая «Helper» и «Библиотека»

Но в вашем случае я предпочитаю, чтобы вы создали файл php, содержащий ваши константы, и переименовали его во что-то вроде my_constants_helper.php .

В вашей модели или контроллере __ construct только

$this->load->helper('my_constants');

И ура, вы можете получить к ним доступ =)

5
ответ дан 13 December 2019 в 19:21
поделиться

Не думали ли вы просто добавить ваши константы в ваш Message_Model класс? Тогда вы будете ссылаться на них по self::ConstantName внутри класса и Message_Model::ConstantName вне класса. Это также предотвратит столкновение пространств имен.

0
ответ дан 13 December 2019 в 19:21
поделиться

Вы можете выбрать загрузку определенного файла конфигурации при загрузке конкретной модели в контроллер. Например, в вашем файле:

application/controllers/messages.php

Вы могли бы использовать такую ​​строку:

$this->config->load('messages');

Если вы включите ее в верхней части вашего контроллера, как это

function __construct() { 
   $this->config->load('messages');
   $this->load->model('message_model');
}

Тогда все эти константы будут доступны для всех функций и методов в данный контроллер. Затем вы вызываете каждую константу конфигурации следующим образом:

$this->config->item('item name')

И вы можете назвать защищенные переменные $; в конструкции также для более короткого синтаксиса.

Если вы используете эти константы конфигурации и модель сообщений в нескольких разных контроллерах, вы можете захотеть создать файл «Библиотека», который затем загружает и конфигурацию, и модель и объявляет там все переменные.

3
ответ дан 13 December 2019 в 19:21
поделиться

Для глобальных конфигураций добавьте в config/config. php или создайте config/application.php и загрузите конфиг, затем п.

$this->config->load('application'); // or autoload this - $autoload['config'] = array('application');
$this->config->item('item name');
1
ответ дан 13 December 2019 в 19:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: