синглтоны плохие? 2 разные конфигурации одновременно? никогда не слышал ничего подобного :) Я могу обсудить, однако, использование магических методов (которые они вообще ничего не "засоряют"). но первые два утверждения ... я не вижу никаких веских аргументов для вас двоих, чтобы оправдать их.

читал почти все вопросы, которые я нашел в StackOverflow по этой теме, но не смог найти прямой ответ.

Вот мой код:

Класс приложения

<?php
    class Application extends Settings {
        public function __construct($env, $cacheDir, $configFile) {
            self::$_env = $env;
            self::$_cacheDir = $cacheDir;
            self::$_config = $this->loadConfig($configFile) // reads configs from xml file into Config object
        }

        // other methods
    }
?>

Настройки класса:

<?php
class Settings {
    protected static $_env = null;
    protected static $_cacheDir = null;
    protected static $_config = null;

    public static function getEnv() {
        return self::$_env;
    }

    public static function getCacheDir() {
        return self::$_cacheDir;
    }

    public static function getConfig() {
        return self::$_config;
    }
}
?>

Я получаю доступ к настройкам из любого места в моем коде, как это:

<?php
var_dump(Settings::getEnv());
?>

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

Вопросов:

Это хорошая практика для хранения глобальных настроек, как это. Каковы недостатки этого метода? Может быть, есть гораздо лучший способ сделать это?

Спасибо за ваши ответы