Классы, объекты, шаблоны — как правильно!? Вот дошел до изучения ООП, немного поплыл... Вот например у меня есть массив, который может состоять из числа, строки или содержать вложения массивов.demo array(он больше, но структура такая...) $cfg = array (
'DL' => array ( 'name' => 'XXXXXXXXXXXXXXXXXXX', 'user' => 'XXXXXXXXXXXXXXXXXXX', 'token' => 'XXXXXXXXXXXXXXXXXXX', 'login' => 'XXXXXXXXXXXXXXXXXXX', 'pass' => 'XXXXXXXXXXXXXXXXXXX' ) ) );var_dumpint(90) ["check"] => int(3) ["crypt"] => array(2) { ["key"] => string(19) "XXXXXXXXXXXXXXXXXXX" ["secret"] => string(19) "XXXXXXXXXXXXXXXXXXX" } } ["cargo"] => array(2) { ["JDE"] => array(5) { ["name"] => string(19) "XXXXXXXXXXXXXXXXXXX" ["user"] => string(19) "XXXXXXXXXXXXXXXXXXX" ["token"] => string(19) "XXXXXXXXXXXXXXXXXXX" ["login"] => string(19) "XXXXXXXXXXXXXXXXXXX" ["pass"] => string(19) "XXXXXXXXXXXXXXXXXXX" } ["DL"] => array(5) { ["name"] => string(19) "XXXXXXXXXXXXXXXXXXX" ["user"] => string(19) "XXXXXXXXXXXXXXXXXXX" ["token"] => string(19) "XXXXXXXXXXXXXXXXXXX" ["login"] => string(19) "XXXXXXXXXXXXXXXXXXX" ["pass"] => string(19) "XXXXXXXXXXXXXXXXXXX" } } } Это настройки для подключения к разным API для получения информации. У меня есть готовые два класса клиентов для этих API, один предоставлялся разработчиками, второй я сделал по аналогии. Я хочу с помощью класса подключать тот или иной клиент, тот в свою очередь должен использовать данные из конфига + получать доп.свойства при вызове. Я запутался, не понимаю:Как именно я должен хранить данные конфига?! Мне нужно сделать это через класс с ограничением видимости или как-то еще? Если это будет класс, нужно ли в данном случае использовать конструктор?Почитал про паттерны, стало еще хуже! Нужно использовать синлтон? Если это объект с вложениями, то надо делать пул? Т.е. у меня просто все это сейчас перепуталось и я не понимаю как правильно... Хочу сделать как положено, а не как хочется ))) Так-то сейчас на массивах в перемешку с объектами и отдельно живущих двух классов API клиентов все работает... Вот хочется собрать все в кучу и чтоб читалось )) Я не прошу писать за меня, я прошу пояснить где и что в моем случае правильней использовать, а я уж почитаю как это едят %)
В вашем случае, для хранения данных конфигурации и использования их в классах API клиентов, можно использовать класс с ограничением видимости и использованием конструктора. В этом классе вы можете определить необходимые свойства, методы для доступа к ним, а также конструктор для инициализации этих свойств при создании объекта.
Примерно так:
class Config { private $settings; private $cargo; public function __construct(array $config) { $this->settings = $config['sett']; $this->cargo = $config['cargo']; } public function getSettings() { return $this->settings; } public function getCargo() { return $this->cargo; } }
Затем вы можете использовать этот класс для создания объекта конфигурации и передачи его в классы API клиентов:
$config = new Config($cfg); $client1 = new APIClient1($config); $client2 = new APIClient2($config);
Не обязательно использовать синглтон или пул в данной ситуации, если у вас нет необходимости в глобальном доступе к объекту конфигурации из разных частей приложения.
Однако, если у вас возникнут дополнительные требования по использованию конфигурации, вы можете рассмотреть возможность применения таких паттернов как Singleton или Factory, но в данном случае, скорее всего, это необязательно.
Надеюсь, это поможет вам разобраться с тем, как правильно структурировать ваш код с использованием ООП принципов. Важно помнить, что наиболее важно следовать принципам единообразия и читаемости кода.
В вашем случае, для хранения данных конфигурации и использования их в классах API клиентов, можно использовать класс с ограничением видимости и использованием конструктора. В этом классе вы можете определить необходимые свойства, методы для доступа к ним, а также конструктор для инициализации этих свойств при создании объекта.
Примерно так:
class Config {private $settings;
private $cargo;
public function __construct(array $config) {
$this->settings = $config['sett'];
$this->cargo = $config['cargo'];
}
public function getSettings() {
return $this->settings;
}
public function getCargo() {
return $this->cargo;
}
}
Затем вы можете использовать этот класс для создания объекта конфигурации и передачи его в классы API клиентов:
$config = new Config($cfg);$client1 = new APIClient1($config);
$client2 = new APIClient2($config);
Не обязательно использовать синглтон или пул в данной ситуации, если у вас нет необходимости в глобальном доступе к объекту конфигурации из разных частей приложения.
Однако, если у вас возникнут дополнительные требования по использованию конфигурации, вы можете рассмотреть возможность применения таких паттернов как Singleton или Factory, но в данном случае, скорее всего, это необязательно.
Надеюсь, это поможет вам разобраться с тем, как правильно структурировать ваш код с использованием ООП принципов. Важно помнить, что наиболее важно следовать принципам единообразия и читаемости кода.