Лучший способ хранить конфигурации библиотеки? - PullRequest
0 голосов
/ 25 апреля 2020

Я нахожусь в процессе создания библиотеки (клиентская библиотека Ftp), и я хочу, чтобы клиент мог настроить параметры, которые он хочет, в файле конфигурации, файл конфигурации содержит два типа параметров, первый - некоторые параметры, касающиеся директив PHP (max_excution_time ...), второй параметр - конфиги FTP (пассивный режим, автопоиск, основной root ...), для этого я сделал следующее:

    abstract class FileConfiguration
    {
        /** @var array */
        protected static $configFile;

        public function __construct()
        {
            self::$configFile = self::$configFile ?: include(__DIR__ . DIRECTORY_SEPARATOR . "Config.php");
        }

        abstract public function getConfig();

        abstract public function setConfig($config);

        abstract public function apply();

        abstract protected function _validateTypeConstraints();
    }

    class FtpConfiguration extends FileConfiguration 
    {
        public function __construct(ConnectionInterface $connection, $config)
        {
            parent::__construct();

            $this->setConfig($config);
        }

        /**
         * Implement here the abstract class methods
         */
    }

    class PhpIniConfig extends FileConfiguration 
    {
        public function __construct($config)
        {
            parent::__construct();

            $this->setConfig($config);
        }

        /**
         * Implement here the abstract class methods
         */
    }

    // usage
    $iniConfig = new PhpIniConfig([
        "maxExecutionTime" => 44
    ]);
    $iniConfig->apply();

    $configuration = new FtpConfiguration($connection, 'default');
    $configuration->apply();

    // FtpClient
    $ftp = new FtpClient($connection, $configuration);

Я не совсем уверен, правильно ли я поступил или нет, поэтому у меня вопрос, есть ли лучший способ обработки клиентских конфигураций, а не шаблон (файл конфигурации)?

...