Настройка переменных в классе PHP

#php #oop #api #class #curl

#php #ооп #API #класс #curl

Вопрос:

Я унаследовал немного кода, который используется для интеграции со сторонней компанией (Highrise CRM). Я немного заржавел на этой стороне PHP, поэтому искал некоторую помощь.

Я хочу назначить переменную сеанса внутри класса. На данный момент у меня есть следующий код:

 var $highrise_url = 'https://example.highrisehq.com';
var $api_token = 'foofoofoofoofoofoofoofoo';
var $task_assignee_user_id = 'foofoo';
  

Но я хочу, чтобы URL, токен и идентификатор были установлены на основе значений сеанса, которые я извлекаю из базы данных пользователя, который вошел в систему, т.Е.

 $_SESSION['hrurl']
$_SESSION['hrapi']
$_SESSION['hrid']
  

Класс использует переменные, установленные выше, в таких функциях, как:

 $curl = curl_init($this->highrise_url.'/deals.xml');
  

Я знаю, что я НЕ МОГУ установить переменную в таком классе, как этот:

 var $highrise_url = $_SESSION['hrurl'];
  

Итак, как мне это сделать?

Я считаю, что это делается с помощью функции construct, но я в лучшем случае шаткий, поэтому был бы признателен за помощь : o)

Большое спасибо,

Грегор

Комментарии:

1. У вас есть конструктор? Поместите это туда.

2. Название вашего вопроса, похоже, не соответствует тексту вашего вопроса.

Ответ №1:

Звучит как работа для конструктора:

 class A
{
    public $highrise_url;
    public $api_token;
    public $task_assignee_user_id;

    public function __construct()
    {
        $this->highrise_url = $_SESSION['hrurl'];
        $this->api_token = $_SESSION['hrapi'];
        $this->task_assignee_user_id = $_SESSION['hrid'];
    }
}

$a = new A();
  

Лучшим решением может быть передача значений конструктору:

 public function __construct($highrise_url, $api_token, $task_assignee_user_id)
{
    $this->highrise_url = $highrise_url;
    $this->api_token = $api_token;
    $this->task_assignee_user_id = $task_assignee_user_id;
}

...

$a = new A($_SESSION['hrurl'], $_SESSION['hrapi'], $_SESSION['hrid']);
  

Второй способ сокращает связь между вашим классом и $_SESSION массивом. Таким образом, вы можете использовать (или тестировать) класс, не полагаясь на функциональность сеанса.

Ответ №2:

Установите его в конструкторе:

 class HighriseClass {
  var $highrise_url;

  function __construct() {
    $this->highrise_url = $_SESSION['hrurl'];
  }
}