Parse error: syntax error, unexpected '$config' (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST) in Код (Text): return [ 'db_name'=>'test', 'db_host'=>'localhost', 'db_user'=>'root', 'db_pass'=>'', 'db_charset'=>'utf8', ]; Код (Text): class DB { $config = require_once('config.php'); public static $dsn = 'mysql:dbname='.$config['db_name'].';host='.$config['db_host']; public static $user = $config['db_user']; public static $pass = $config['db_pass'];
Версия пхп? --- Добавлено --- Ну и дебажить пробовал? Первое, что надо проверить - содержимое переменной после реквайра. Далее. У тебя там реквайр ванс. Если ты ентот код выполнишь более двух раз, то в первом случае он сработает, а во втором нет. Крч направления даны - разрабатывай варианты.
Ну для конфигов возможно Но я бы создал отдельный класс который в зависимости от переданного значения будет отдавать нужный файл \Config::get('database') или хелпер config('database')
Вообще для всего, а не только для конфигов. Один глобальный костыль другим глобальным костылём менять? Нет уж.
@ElisDN Ну банально если вдруг захочешь изменить путь к файлам конфигурации переписать гетер сетер закешировать и т.д
Ну остаьте это в самой абстракции конфига, а в DB передавайте уже готовые параметры, чтобы конструктор лишней зависимостью на вызов Config::get не загаживать.
Вот тут согласен. Классик еще говорил о том что ты любишь подмену понятий Разговор начинается об одном потом плавно перетекает в другое и вот уже из набора слов можно крутить вертеть как вздумается.
@nospiou, там действительно как подметил @ElisDN, код в 5 строке не туда заехал. Примерно тому, что воздух в космос вытек
Вообще в этих классах DB, если это не нормальный фреймворк, ничего полезного нету, достаточно экземляр mysqli или PDO положить в какой-нибудь Registry
если вывести масив на екран данные получаю вне класа PHP: $config = require_once('config.php'); print_r $config; версия php 7.2
@ElisDN mkramer врать не будет. А обертку над конфигами в любом случаи нужно сделать и не важно где они будут запрашиваться. @Admiral_24 Ну тебе ж уже подсказали самый простой вариант Код (Text): private $config; public function __construct() { $this->config=require_once('config.php'); } хотя в твоем случаи со static там вообще хаос
сделал вот так не уверен что так делать стоит но заработало в config.php прописал константы PHP: define('DB_HOST', 'localhost'); define('DB_NAME', 'test'); define('DB_USER', 'root'); define('DB_PASS', ''); define('DB_CHAR', 'utf8'); а в класе PHP: include_once("config.php"); class DB { public static $dsn = 'mysql:dbname='.DB_NAME.';host='.DB_HOST; public static $user = DB_USER; public static $pass = DB_PASS; не то конечно что хотел но не получается передать данные с массива для подключения только учусь....
Ну хоть кто-то трейты для ООП советовать не будет. И то хорошо. Уже кучи систем для чтения конфигов и внедрения зависимостей напридумывали вместо своих обёрток, синглтонов и констант. Либо: Код (Text): class DB { public function __construct(array $params) { ... } } либо: Код (Text): class DB { private $pdo; public function __construct(PDO $pdo) { $this->pdo = $pdo; } } либо напрямую брать new PDO(...). Без всяких require и статики в классах. И заполнить всё в контейнере.
Ну наконец то от тебя почти что то стоящее. Вот тут практически согласен. Писать свой дырявый mvc когда есть целые готовые фреймворки это глупо.
Ну и зачем тогда учите людей ларавеловскому и другому говнокоду: раз со мной и mkramer согласны? Зачем костыли с лишней связанностью и синглтоны советуете? Вот и говорю вам вашими же словами, что "ты говоришь о вещах в которых не разбираешься". Увы, но опять нет. Писать свой дырявый недо-Web-MVC до других фреймворков весьма глупо. Писать свой кастомный Web-MVC после других фреймворков вполне умно.