Начал учить PHP, изучил осовы, чтобы было интересно сам придумал себе заание сам же ег и вполняю. Так вот, потебовалось брать данные корые нужны в то или иной фунции, чтобы н раскидывать их по всему коду, и для удобства потом изменять вынес в отдлный файл config.php (такую практику я замечал изучая чужие коды). В код естественно загржаю их с помощью $GLOBALS['переменая']. И тут получил замечание мол global использвать плохой тон, основания я не получил, но осадочк отался. Единсвенное обоснония я встречал лишь то что другоу прогрммисту это будет сложно читать. Вопрос, как испоьзовать переменные и файла config.php и при этом не быть редиской в глзах других прогрмистов, считающих это плохим тоном?
P.S.
Весь скрипт который я пишу выплняется из консоли, поьзователю ни чего не нужно отображать.
Для начала неплохо было бы подучить русский язык... А по сабжу - можно/нужно передавать все параметры функциям напрямую, либо создать класс, который уже будет содержать в себе нужные значения, этакая "мусорка".
<?php
namespace App;
class Config {
private $values = [];
public function __construct()
{
$this->readfile();
}
public function readfile()
{
// read config.json
//
// save to ->values
};
// get
// set
// or magic methods
public function getValue()
{
return ...;
};
}
class App {
private $_config;
private $_instance = NULL;
static public function get_instance()
{
if (!$this->_instance)
{
$this->_instance = new App;
}
return $this->_instance;
};
public function __construct()
{
$this->_config = new Config;
}
public function __get($variable)
{
if ($variable === "config")
{
return $this->_config;
}
};
}
use \App\App;
App::get_instance()
->config->getValue("my.super.value")
roma_zero, придется, мой пример мягко говоря тоже плох, нужно еще парочку оберток и магических штучек, чтобы можно было удобно дергать конфиг и подтягивать прочие штуки, вам лучше освоить в малой степени это и перейти на какой-нибудь фреймворк, написать на нем свою мега cms, так быстрее научитесь.
если в языке есть какая-то возможность то используй ее наздоровье. естественно надо аккуратно подходить и не пихать в GLOBALS все подряд, но если у тебя есть какие-то ключевые параметры (в особенности когда они не изменяются), влияющие на весь проект, то им там самое место. например флаг отладки, флаг продакшн/девелопмент.
но если у тебя в действительности локальный параметр, то засовывать его в GLOBALS дурной тон, тут я согласен.