@alexmixaylov

Что можно улучшить/исправить в классе (Singleton)?

Занялся наконец то фундаментальными вещами чтоб подтянуть теоретическую базу.
Сейчас читаю книгу Мэтта Зандстры - PHP: объекты, шаблоны и методики программирования.
Дошел до главы с паттернами и пробую на практике
Написал класс для получения конфигурации используя Синглтон
подскажите пожалуйста косяки какие то есть? Что можно было бы улучшить/исправить
<?php

namespace App\Core;

use Symfony\Component\Dotenv\Dotenv;

/**
 * Class Config
 * @package App\Core
 */
class Config {

	/**
	 * @var  static
	 */
	private static $instance;

	/**
	 * @var array
	 */
	private $params = [];

	/**
	 * Config constructor.
	 */
	private function __construct() {
		$dotenv = new Dotenv();
		// здесь немного смущает путь к конфигурационному файлу
		$dotenv->load( __DIR__ . '/../../.env' );
		$this->params = $_ENV;
	}

	/**
	 * @return static
	 */
	public static function getInstance(): self {
		// в этом методе можно использовать и static и self Есть ли какая то разница
		if ( empty( self::$instance ) ) {
			return new Config();
		}

		return self::$instance;
	}

	/**
	 * @return array
	 */
	public function getParams(): array {
		return $this->params;
	}

	/**
	 * @param string $key
	 *
	 * @return string
	 */
	public function getParam( string $key ): string {
		return $this->params[ $key ];
	}
}
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
iiifx
@iiifx
PHP, OOP, SOLID, Yii2, Composer, PHPStorm
public static function getInstance(): self {
    if ( empty( self::$instance ) ) {
      self::$instance = new Config();
    }

    return self::$instance;
  }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@BATPYIIIKOB
PHP, JS
Также можешь задать классу
final class Config {}
https://refactoring.guru/ru/design-patterns/singleton
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 нояб. 2019, в 18:13
2500 руб./за проект
19 нояб. 2019, в 17:59
300 руб./за проект
19 нояб. 2019, в 17:42
300 руб./за проект