@kirill-93

Какой подход правильнее?

Вроде бы мелочь, но все-таки спрошу.
У меня есть класс, который работает с внешним сервисом и умеет получать access_token, получать и отправлять данные. Чтобы получать данные, токен не нужен, а чтобы изменять, нужен. У меня в голове два варианта реализации:
1) Создаем класс, методы которого возвращают данные, не сохраняя их у себя. Методы могут быть статичными, чтобы обращение к ним было короче, без инициализации объекта. Мы в этом случае получаем данные из одного метода и вручную передаем их в другой метод.
<?php

class Api 
{
  public static function getAccessToken() {
    $token = file_get_contents(...);
    return $token;
  }
 
  public static function getItem($id) {
    $item = file_get_contents('...');
    return $item;
  }

  public static function modifyItem($item, $params) {
    $token = self::getToken();
    //Отправляем запрос на изменение
    curl_init(...);
  }
}

//Где-то в коде
$item = Api::getItem(12);
if ($item->condition) {
  Api::modifyItem($item, ['color' => 'red']);
}


2) Храним данные внутри класса и ничего не возвращаем.
<?php

class Api 
{
  public $item;
  private $token;

  public function getAccessToken() {
    $this->token = file_get_contents(...);
  }
 
  public function getItem($id) {
    $this->item = file_get_contents('...');
  }

  public function modifyItem($params) {
    $this->getToken();
    //Отправляем запрос на изменение
    curl_init(..., $this->item, $params, $this->token);
  }
}

//Где-то в коде
$api = new Api();
$api->getItem(12);
if ($api->item->condition) {
  $api->modifyItem(['color' => 'red']);
}


Когда и почему лучше/хуже использовать первый и второй варианты?
Спасибо.
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 3
@necrodeflorator
Если в getToken есть проверка на isset($this->token), то второй вариант лучше
Ответ написан
Комментировать
vitaly_74
@vitaly_74
второй вариант лучше. однозначно. просто потому что он без статических методов. и вот метод getAccessToken - я бы сделал приватным, и вообще добавил бы его в конструктор.
Получится когда вы говорите: новый Апи - и у него в уже есть какие то изначальные данные. это полезно. (в конструкторе в какую нить приватную переменную запишите file_get_contents)
Ответ написан
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
Что быстрее - получать данные из памяти в привычном для php массиве или читать их с диска в непонятной строке, а потом парсить ее?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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