У меня есть список констант (я использую их в качестве перечисления), некоторые, определяют операторы, и некоторые - просто глобальные переменные.
Где я, предполагают для помещения их в платформу MVC, таким образом, я могу использовать их и для моей модели и для моего контроллера, который должен сослаться на нее?
Я не засунул бы его в config/constants.php, так как за исключением них не должны называть эта модель и контроллеры, которые используют его.
Редактирование 1: разъяснение
Чтобы быть точнее, у меня есть мой message_model
модель и это имеют набор констант, в которых я нуждаюсь, которые хранятся в message_model_constants.php
. Куда я должен поместить message_model_constants.php
и есть ли способ включать его автоматически контроллером, который загружается message_model
когда message_model
не (и я не хочу, чтобы это было), автоматически загруженный.
Редактирование 2:
Я действительно не хочу автоматически загружать константы за исключением того, когда я использую модель
расширяя ответ Бреннана Новака, вы можете упростить свой код, загрузив файл конфигурации в конструктор модели. Таким образом, в контроллерах вам нужно будет загружать только модель, а все остальное будет сделано автоматически.
Модель
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
Перейдите в application / config / constants.php
и определите свои константы, и вы можете использовать свои константы в Model-View-Controller CI, не включая «Helper» и «Библиотека»
Но в вашем случае я предпочитаю, чтобы вы создали файл php, содержащий ваши константы, и переименовали его во что-то вроде my_constants_helper.php
.
В вашей модели или контроллере __ construct
только
$this->load->helper('my_constants');
И ура, вы можете получить к ним доступ =)
Не думали ли вы просто добавить ваши константы в ваш Message_Model
класс? Тогда вы будете ссылаться на них по self::ConstantName
внутри класса и Message_Model::ConstantName
вне класса. Это также предотвратит столкновение пространств имен.
Вы можете выбрать загрузку определенного файла конфигурации при загрузке конкретной модели в контроллер. Например, в вашем файле:
application/controllers/messages.php
Вы могли бы использовать такую строку:
$this->config->load('messages');
Если вы включите ее в верхней части вашего контроллера, как это
function __construct() {
$this->config->load('messages');
$this->load->model('message_model');
}
Тогда все эти константы будут доступны для всех функций и методов в данный контроллер. Затем вы вызываете каждую константу конфигурации следующим образом:
$this->config->item('item name')
И вы можете назвать защищенные переменные $; в конструкции также для более короткого синтаксиса.
Если вы используете эти константы конфигурации и модель сообщений в нескольких разных контроллерах, вы можете захотеть создать файл «Библиотека», который затем загружает и конфигурацию, и модель и объявляет там все переменные.
Для глобальных конфигураций добавьте в config/config. php
или создайте config/application.php
и загрузите конфиг, затем п.
$this->config->load('application'); // or autoload this - $autoload['config'] = array('application');
$this->config->item('item name');