Не вполне понимаю такую настойчивость с "объявлением суперглобальных переменных". Можно ведь сделать класс SITE, а потом от него будут наследовать модули. В результате ВСЕ модули смогут обращаться к методам класса-родителя через $this->method(); Если нужно передавать какие-то переменные в экземпляры дочерних классов, так, чтобы не создавались множественные копии (ну например, есть в родительском классе var $DB - экземпляр DatabaseAbstractionLayer, можешь воспользоваться передачей переменных по ссылке, статическими методами (посмотри, как используются методы factory() в PEAR)).
PS. Прошу прощения за некоторый флуд - по сути все это уже было сказано; я просто постарался обобщить.