Как правильно использовать конфигурационный файл и автозагрузчик - PullRequest
1 голос
/ 12 октября 2011

Я создал файл конфигурации, который выглядит следующим образом:

$conf['db_hostname'] = "localhost";
$conf['db_username'] = "username";
$conf['db_password'] = "password";
$conf['db_name'] = "sample";
$conf['db_type'] = "mysql";
$conf['db_prefix'] = "exp";

и сохранил его как config.php.

Аналогично автозагрузчик выглядит как

class autoloader {
    public static $loader;

    public static function init()
    {
        if(self::$loader == NULL) {
            self::$loader = new self();
        }
        return self::$loader;
    }   

    public function __construct()
    {
        spl_autoload_register(array(this, 'library'));
        spl_autoload_register(array(this, 'controller'));
        spl_autoload_register(array(this, 'helper'));
        spl_autoload_register(array($this, 'model'));
    }

    public function library($class) 
    {
        set_include_path(get_include_path() . PATH_SEPARATOR . '/lib');
        spl_autoload_extensions('.php');
        spl_autoload($class);
    }

    public function controller($class)
    {
        set_include_path(get_include_path() . PATH_SEPARATOR . '/controller');
        spl_autoload_extensions('.php');
        spl_autoload($class);
    }

    public function helper($class)
    {
        set_include_path(get_include_path() . PATH_SEPARATOR . '/helper');
        spl_autoload_extensions('.php');
        spl_autoload($class);
    }

    public function model($class)
    {
        set_include_path(get_include_path() . PATH_SEPARATOR . '/model');
        spl_autoload_extensions('.php');
        spl_autoload($class);
    }
} 
  • Где мне разместить оба этих файла? В корневой папке?
  • Как эти $config будут доступны в приложении?
  • Как мне использовать их в index.php? Должен ли я создать для $config массив также класс?
  • Как я могу запретить прямой доступ к файлу config.php?

1 Ответ

1 голос
/ 12 октября 2011

Вы должны включить ваш конфигурационный файл. Я бы порекомендовал использовать require_once. Добавьте этот код ко всем файлам, которым потребуются переменные конфигурации. Лучший способ сделать это - использовать файл контроллера, обычно index.php. Таким образом, вам нужно всего лишь добавить require_once в один файл.

require_once("./config.php");

Не беспокойтесь о людях, просматривающих пароль к вашей базе данных, все переменные php являются чисто серверными, и клиент не может просматривать php-код или переменные, если они явно не отображаются

...