Ссылки

Описание

class cmsConfig расположен в файле /core/classes/config.class.php

Сам по себе класс ничего сложного не представляет. Используется для загрузки и сохранения базовых настроек InstantCMS.

Краткий обзор

private static $instance

переменная для хранения объекта класса, недоступная извне. Доступ обеспечивается методом public static function getInstance().

private function __ __construct()

конструктор для создания объекта грузит (выполняет с помощью функции include()) конфиг. файл из /includes/config.inc.php.

public static function getInstance()

как было описано выше, метод используется для получения экземпляра класса.

public function saveToFile($_CFG, $file='config.inc.php')

метод сохраняет настройки в виде php файла в папку /includes/, который потом будет грузиться.

Конфигурационный файл

Стоит обратить внимание на параметр

$_CFG['debug']= 0;

Параметр введен для включения режима отладки и предоставления отладочной информации. В дальнейшем в классах API будет встречаться следующая конструкция

    if ($inConf->debug){
        //выдача отладочной информации        
    }

Злоупотреблять подобными вставками не стоит, поскольку будет влиять на быстродействие.

Код конфиг. файла

<?php 
if(!defined('VALID_CMS')) { die('ACCESS DENIED'); } 
$_CFG = array();
$_CFG['sitename'] 	= 'Мой сайт';
$_CFG['hometitle'] 	= '';
$_CFG['homecom'] 	= '';
$_CFG['siteoff'] 	= 0;
$_CFG['debug'] 	= 0;
$_CFG['offtext'] 	= 'Производится обновление сайта';
$_CFG['keywords'] 	= 'InstantCMS, система управления сайтом, бесплатная CMS, движок сайта, CMS';
$_CFG['metadesc'] 	= 'InstantCMS - бесплатная система управления сайтом с социальными функциями';
$_CFG['seourl'] 	= '';
$_CFG['lang'] 	= 'ru';
$_CFG['sitemail'] 	= '';
$_CFG['wmark'] 	= 'watermark.png';
$_CFG['stats'] 	= 1;
$_CFG['template'] 	= '_default_';
$_CFG['splash'] 	= 0;
$_CFG['slight'] 	= 1;
$_CFG['db_host'] 	= 'localhost';
$_CFG['db_base'] 	= 'my_db';
$_CFG['db_user'] 	= 'my_user';
$_CFG['db_pass'] 	= 'db_password';
$_CFG['db_prefix'] 	= 'cms';
$_CFG['page_fx'] 	= 1;
$_CFG['show_pw'] 	= 1;
$_CFG['index_pw'] 	= 0;
$_CFG['fastcfg'] 	= 1;
$_CFG['mailer'] 	= 'mail';
$_CFG['sendmail'] 	= '/usr/sbin/sendmail';
$_CFG['smtpauth'] 	= 0;
$_CFG['smtpuser'] 	= '';
$_CFG['smtppass'] 	= '';
$_CFG['smtphost'] 	= 'localhost';
?>

Код класса.

По скольку код класса не очень большой, привожу код целиком здесь:

  class cmsConfig {
    private static $instance;
    private function __construct(){
        $cfg_file = PATH.'/includes/config.inc.php';
        if (file_exists($cfg_file)){
            include($cfg_file);
            foreach ($_CFG as $id=>$value) {
                $this->{$id} = $value;
            }
        }
        if (!$this->db_prefix){
            $this->db_prefix = 'cms';
        }
        return true;
	}
    private function __clone() {}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    public static function getInstance() {
        if (self::$instance === null) {
            self::$instance = new self;
        }        
        return self::$instance;
    }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
     * Сохраняет массив в файл конфигурации
     * @param array $_CFG
     */
    public function saveToFile($_CFG, $file='config.inc.php'){
        $filepath = PATH.'/includes/'.$file;
        if (file_exists($filepath)){
            if (!@is_writable($filepath)){ die('Файл <strong>'.$filepath.'</strong> недоступен для записи!'); }
        } else {
            if (!@is_writable(dirname($filepath))){ die('Папка <strong>'.dirname($filepath).'</strong> недоступна для записи!'); }
        }
        $cfg_file = fopen($filepath, 'w+');
        fputs($cfg_file, "<?php \n");
        fputs($cfg_file, "if(!defined('VALID_CMS')) { die('ACCESS DENIED'); } \n");
        fputs($cfg_file, '$_CFG = array();'."\n");
        foreach($_CFG as $key=>$value){
            if (is_int($value)){
                $s = '$_CFG' . "['$key'] \t= $value;\n";
            } else {
                $s = '$_CFG' . "['$key'] \t= '$value';\n";
            }
            fwrite($cfg_file, $s);
        }
        fwrite($cfg_file, "?>");
        fclose($cfg_file);
        return true;
    }
}

Добавил Львенок

 
справочник/api_instantcms/настройка.txt · Последние изменения: 2010/01/17 10:58 От feba7