я строю сайт, и я включил файл настроек с именем «settings.php»,
я думаю, что это круто — зарегистрировать глобальную переменную по имени: $ _SETTINGS
как массив настроек сайта (db_name, db_pass …. и т. д.)
как так:
<?php
$_SETTINGS = array();
$_SETTINGS['DB_HOSTNAME']= 'localhost';
$_SETTINGS['DB_NAME'] = 'db_test';
$_SETTINGS['DB_USERNAME'] = 'db_user';
$_SETTINGS['DB_PASSWORD'] = 'p422w0rd';
?>
а затем получить доступ к этим настройкам на подстраницах … путем доступа к $ _SETTINGS …
этот код работает просто отлично,
но мне любопытно, допустимо ли среди сообщества программистов php называть ваши собственные переменные как $ _?
или мой код считается плохим дизайном?
Спасибо
Вы можете сделать это, но я бы не рекомендовал это, так как суперглобальный переменные также имеют этот шаблон / префикс, например $_SERVER
, $_SESSION
, $_GET
что, возможно, немного сбивает с толку.
Но согласно руководство. Технически вы можете сделать это:
допустимая переменная название начинается с буква или подчеркивание, с последующим на любое количество буквы, цифры или подчеркивания. Как регулярное выражение, это будет выражаться так: ‘[A-Za-Z_ \ x7f- \ XFF] [A-Za-z0-9_ \ x7f- \ XFF] *’
В конце концов, это личное предпочтение тому, что вы делаете.
Мое личное мнение, что это плохая идея. Лучшее решение — создать одноэлементный класс, обеспечивающий настройку всего приложения.
Что-то вроде этого:
class MyConfigProvider
{
private $config = array();
private static $instance = null;
public static function getInstance()
{
if (self::$instance === null)
self::$instance = new self();
return self::$instance;
}
private function __construct(){}
public function getConfig()
{
return $this->config;
}
public function setConfig(array $config)
{
$this->config = $config;
}
}
Вы можете получить конфигурацию во всех местах в вашем приложении с помощью
$config = MyConfigProvier::getInstance()->getConfig();
Это не лучшее решение, но его легко реализовать и оно работает