php configuración global de la aplicación

He leído casi todas las preguntas que he encontrado en StackOverflow sobre este tema, pero no pude encontrar una respuesta directa.

Aquí está mi código:

Clase de aplicación

<?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
    }
?>

Clase de configuración:

<?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;
    }
}
?>

Accedo a la configuración desde cualquier lugar de mi código como este:

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

Quiero acceder a la configuración desde muchos lugares diferentes. Todos los valores se pueden establecer solo una vez y no se pueden sobrescribir (por lo que el registro con los métodos __set no funciona, porque puedo establecer cualquier valor desde cualquier lugar en cualquier etapa del proceso de solicitud)

Preguntas:

¿Es una buena práctica almacenar configuraciones globales como esta? ¿Qué desventajas de este método? ¿Quizás haya una forma mucho mejor de hacer esto?

Gracias por sus respuesta

Respuestas a la pregunta(3)

Su respuesta a la pregunta