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



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



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



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



Правка 1: Уточнение



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



Правка 2:



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

685   5  
PHP

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

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

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

В вашей модели или контроллере __construct Просто

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

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

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

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');

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

Comments

    Ничего не найдено.