$settings array or Config Class to store project settings?

后端 未结 7 1665
眼角桃花
眼角桃花 2021-02-04 16:25

How should I store settings for project?

Which is better - to use a $settings array with all my settings:

$settings[\'max_photos\'] = 30;
//         


        
7条回答
  •  孤街浪徒
    2021-02-04 16:51

    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;.

提交回复
热议问题