How should I store settings for project?
Which is better - to use a $settings
array with all my settings:
$settings[\'max_photos\'] = 30;
//
I think it is best to use constants for configuration. For example using class constants:
class Config {
const
max_photos = 30,
something_else = 100,
// ...
;
}
echo Config::max_photos;
If you have PHP 5.3 you could also define them as global constants:
const MAX_PHOTOS = 30;
echo MAX_PHOTOS;
But I think this is far less clean and straightforward.
Obviously this will only work as long as you are only storing constants, i.e. scalar, non-expression values. If your configuration contains arrays for example, this won't work anymore. In this case I would use a Config class with public static properties:
class Config {
public static $per_page = 30;
public static $array = array(...);
}
echo Config::$per_page;
The latter is very similar to the $config
array approach, but has the benefit (or may this be a drawback?) that the class is accessible from everywhere including functions and classes, whereas the array is accessible only in the global space unless you import it into functions/classes using global $config;
.