piyush
piyush

Reputation: 976

Defining Application Constants in Codeigniter

I want to know a clean way of defining Application Constants in Codeigniter. I don't want to change any native file of codeigniter. Hence I don't want to define it in application/config/constants.php as when I need to migrate to newer version of code-igniter I will not be able to copy the native files of codeigniter directly.

I created a file application/config/my_constants.php and defined my constants there. 'define('APP_VERSION', '1.0.0');'

I loaded it using $this->load->config('my_constants');

But I am getting a error

Your application/config/dv_constants.php file does not appear to contain a valid configuration array.

Please suggest me a clean way of defining application level constants in code-igniter.

Upvotes: 12

Views: 42199

Answers (7)

Rodrigo Guariento
Rodrigo Guariento

Reputation: 167

Let me suggest that you use composer.json to autoload your own Constants.php file, like this:

enter image description here

Upvotes: 0

Genki
Genki

Reputation: 489

You can accomplish your goal by adding constants to your own config file, such as my_config.php.

You would save this file in the application/config folder, like this: application/config/my_config.php.

It is very common to have a separate config file for each application you write, so this would be easy to maintain and be understood by other CI programmers.

You can instruct CI to autoload this file or you can load it manually, as needed. See the CI manual on "Config class".

Upvotes: 0

IcyFlame
IcyFlame

Reputation: 5209

just a complete answer. (None of the answers show how to use the constants that were declared)

The process is simple:

  1. Defining a constant. Open config/constants.php and add the following line:

    define('SITE_CREATOR', 'John Doe')

  2. use this constant in another file using:

    $myVar = 'This site was created by '.SITE_CREATOR.' Check out my GitHub Profile'

Upvotes: 4

channasmcs
channasmcs

Reputation: 1156

Please refer this:

http://ellislab.com/forums/viewthread/56981/

Define variable in to constants & add value on array

$ORDER_STATUS  = array('0'=>'In Progress','1'=>'On Hold','2'
                 =>'Awaiting Review','3'=>'Completed','4'
                 =>'Refund Requested','5'=>'Refunded');

Upvotes: 0

Khandad Niazi
Khandad Niazi

Reputation: 2396

    config file (system/application/config/config.php) to set configuration related variables.

    Or use 

    constant file (system/application/config/constants.php) to store site preference constants.


  =======================
  DEFINE WHAT YOU WANT
  =======================
  $config['index_page'] = 'home';
  $config['BASEPATH'] = 'PATH TO YOUR HOST';

Upvotes: 1

Nick Pyett
Nick Pyett

Reputation: 3408

Instead of using define(), your my_constants.php file should look something like this:

$config['app_version'] = '1.0.0';

Be careful with naming the array key though, you don't want to conflict with anything.

If you need to use define(), I would suggest doing it in the main index.php file, though you will still need to use APP_VERSION to get the value.

Upvotes: 3

Mischa
Mischa

Reputation: 43298

Not using application/config/constants.php is nonsense! That is the only place you should be putting your constants. Don't change the files in system if you are worried about upgrading.

Upvotes: 39

Related Questions