Работает потому что в конструкторе конфига
public function __construct($cfg_file='config.php'){
$this->data = $this->load($cfg_file);
$this->set('cfg_time_zone', $this->data['time_zone']);
if (isset($_SESSION['user']['time_zone'])){ $this->data['time_zone'] = $_SESSION['user']['time_zone'];
}
$this->set('root_path', ROOT . $this->root);
$this->set('system_path', $this->root_path . 'system/');
$this->set('upload_path', ROOT . $this->upload_root);
$this->set('cache_path', ROOT . $this->cache_root);
}
Эта строка
$this->set('root_path', ROOT . $this->root);
Будет устанавливать root_path из константы ROOT=$_SERVER['DOCUMENT_ROOT'], и ключа массива 'root' (файла config.php ) содержащего этот искомый слеш
В итоге при использовании
<?php $this->addMainCSS("templates/{$this->name}/css/***.css"); ?>
перед template слеш ненужен, так как он уже определен в
$this->path = $config->root_path
Тоесть root_path содержит путь к корневой директории сервера + слеш который определен в файле конфигурации.