Задать вопрос
@AndRussia

Как засунуть переменные из include файла в класс?

Доброго времени суток. Как засунуть переменные через include из файла в class?
Вот код файла в который делаю include:
require "/engine/data/dbconfig.php";

abstract class AuthMeController {
    const HOST = $conf_host;
    const USERNAME = $conf_user;
    const PASSWORD = $conf_password;
    const DATABASE = $conf_db;
    const AUTHME_TABLE = $conf_authme_table;

Вот код файла с самими переменными:
$conf_host = 'localhost';
	$conf_port = 3306;
	$conf_user = 'root';
	$conf_password = 'ПАРОЛЬ';
	$conf_db = 'БАЗА';
	$conf_authme_table = 'users';

В ответ выдает:
Parse error: syntax error, unexpected '$conf_host' (T_VARIABLE) in W:\domains\fusion\authme\AuthMeController.php on line 10
  • Вопрос задан
  • 109 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@kot999
Backend software engineer
тут изначально очень не правильный подход. не нужно делать "дефолтную конфигурацию" через глобальные переменные.
class DbConnection
{
    private string $userName;
    private string $password;
    private string $dbname;

    public function __construct(string $userName, string $password, string $dbName)
    {
        $this->userName = $userName;
        $this->password = $password;
        $this->dbname = $dbName;
    }
}


class AuthController
{
    private DbConnection $dbConnection;

    public function __construct(DbConnection $connection)
    {
        $this->dbConnection = $connection;
    }
}

$dbSettings = include('dbconfig.php');
$connection = new DbConnection($dbSettings['login'], $dbSettings['password'], $dbSettings['dbName'] );
$controller = new AuthController($connection);


а в файле dbconfig.php

return [
'login'=>'myLogin',
'password'=>'myPassword',
'dbName'=>'myDbName'
];
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
delphinpro
@delphinpro Куратор тега PHP
frontend developer
dbconfig.php

return [
  'host' => 'localhost';
  'port' => 3306;
  'user' => 'root';
  'password' => 'ПАРОЛЬ';
  'db' => 'БАЗА';
  'authme_table' => 'users';
];


class Config {
  public $host;
  public $user;
  // ...

  public function __construct(array $conf){
    $this->host = $conf['host'];
    $this->user = $conf['user'];
    // ...
  }
}


class AuthController {
  protected $config;

  public function __construct(Config $config){
    $this->config = $config
  }
}


Потом

$conf = include "/engine/data/dbconfig.php";
$config = new Config($conf);
$constroller = new AuthController($config);
Ответ написан
Комментировать
@Nc_Soft
Ты придумываешь dotenv
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы