function get_header() {
global $config;
$header = new Template('header');
$header->set('pagetitle', $config['page_title']);
echo $header->output();
}
В основном, вы используете глобальную переменную в локальном контексте.
Было бы неплохо инкапсулировать конфигурацию в каком-то классе конфигурации с помощью singleton, поэтому конфигурация не будет перезаписана ничем.
Чтобы быть полностью совместимым с почти хорошей практикой объектно-ориентированного программирования;)
class Config {
protected $data;
public function __construct(array $config) {
$this->data = $config;
}
public function get($key) {
return $this->data['key'];
}
}
class ConfigManager {
public static $configs;
// In "good OOP" this should't be static. ConfigManager instance should be created in some kind of initialisation (bootstrap) process, and passed on to the Controller of some sort
public static function get($configName) {
if(! isset(self::$configs[$configName]))
self::$configs[$configName] = new Config(include('configs/' . $configName. '.php')); // in good OOP this should be moved to some ConfigReader service with checking for file existence etc
return self::$configs[$configName];
}
}
, а затем в configs/templates.php
return array('page_title' => 'Page Title');
ваша функция будет выглядеть следующим образом:
function get_header() {
$config = ConfigManager::get('templates');
$header = new Template('header');
$header->set('pagetitle', $config->get('page_title'));
echo $header->output();
}
Это может показаться чрезмерно сложный, и, конечно же, вам не нужно следовать подобным практикам, но чем больше вы кодируете, тем больше вы будете наслаждаться хорошей практикой.
Использование глобалов не является одним из них!