#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'];
}
}