@knowledge

Можно ли использовать require_once в данном случае?

у меня есть некий класс Kernel, где я собираюсь хранить основные настройки приложения и наследовать этот класс другими классами, если это необходимо.
есть свойство settings и подключение файла, где эти settings храняться через конструктор, естественно через require_once, так как мне надо подключить его только один раз
class Kernel {
	public $settings;

	public function __construct() {
		$this->settings = require_once __DIR__.'../config.php';
	}
}


И вот у меня есть классы Controller и View допустим, которые наследуют класс Kernel и получается, что тот класс, который наследует первым, в частности Controller, получает settings из файла конфига как нужно, а вот уже при запуске View он возвращает boolean значение true...

Если заменить require_once на require, то все в порядке, но и файл читается соответсвенно столько раз, сколько запустится конструктор, что уже неправильно само по себе

Как в описанном мной случае можно осуществить правильное одиночное чтение файла config.php?
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
class Settings {
  private $settings;
  private static $instance;
  public static getInstance() {
    if (!self::$instance) self::$instance = new self();
    return self::$instance;
  }
  public function getSettings() {
    return $this->settings;
  }
  private function __construct() {
    $this->settings = ...
  }
}

class Kernel {
  protected $settings;
  public function __construct() {
    $this->settings = Settings::getInstance()->gteSettings();
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы