Передать значение переменной из одного метода класса другой, каков оптимальный способ?

255
05 мая 2022, 05:20

Есть один класс и две функции внутри него. Во второй функции нужно значение переменной, которая получается из функции №1.

class A {
function first {
**$result**
}
function second {
$arr [
'fruit' => $result,
'vegetable' => 'potato'
];
}
}

Подскажите, пожалуйста, каков может быть наиболее эффективный способ решения этой задачи? Перепробовал множество различных вариантов, но что-то ничего не выходит...

Конкретный код, с которым работаю:

class Auth
{
    public $url = "https://ддддддддддд/auth/login/";
    public $url2 = "https://auth.ооооооооо/billing/id/";
    public $credentials = [
        'user_name' => 'вававава',
        'user_pass' => 'вавававава',
        'product_code' => 'вавава'
    ];
    public function moveaway()
    {
        $access = json_encode($this->credentials);
        $getting = curl_init($this->url);
        curl_setopt($getting, CURLOPT_POST, 1);
        curl_setopt($getting, CURLOPT_POSTFIELDS, $access);
        curl_setopt($getting, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($getting, CURLOPT_SSL_VERIFYPEER, false);
        $output = curl_exec($getting);
        curl_close($getting);
        $decode = json_decode($output, true);
        $sidfinal = $decode['data']['SID'];
        global $sidfinal;
    }
    public function cid()
    {
        echo self::$sidfinal;
        $second = [
            'sid' => $sidfinal,
            'ogrn' => 1071650001796
        ];
        $injson = json_encode($this->second);
        $nextstep = curl_init($this->url2);
        curl_setopt($nextstep, CURLOPT_POST, 1);
        curl_setopt($nextstep, CURLOPT_POSTFIELDS, $injson);
        curl_setopt($nextstep, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($nextstep, CURLOPT_SSL_VERIFYPEER, false);
        $output2 = curl_exec($nextstep);
        curl_close($nextstep);
        echo $output2;
    }
}
$h = new Auth();
$h->moveaway();
$h->cid();
Answer 1

Функции могут возвращать значения и принимать аргументы.
Вероятно, в вашем случае это и есть «самый оптимальный способ».

class Auth {
    public function moveaway()
    {
        // ...
        $sidfinal = $decode['data']['SID'];
        return $sidfinal;
    }
    public function cid($sid)
    {
        $second = [
            'sid' => $sid,
            'ogrn' => 1071650001796
        ];
        // ...
    }
}

$h = new Auth();
$sid = $h->moveaway();
$h->cid($sid);

Второй вариант, сохранить нужную переменную в свойство экземпляра класса:

class Auth {
    private $sid;
    public function moveaway()
    {
        // ...
        $this->sid = $decode['data']['SID'];
    }
    public function cid()
    {
        $second = [
            'sid' => $this->sid,
            'ogrn' => 1071650001796
        ];
        // ...
    }
}

$h = new Auth();
$h->moveaway();
$h->cid();
READ ALSO
Кодировка строки в Base64

Кодировка строки в Base64

Есть строка , необходимо её закодировать в Base64, как на этом сайте

204
Определение наследуемого класса Unity

Определение наследуемого класса Unity

У меня есть некий кошелек, в котором пока что есть только монетки и ключи для сундуковНа данный момент player выглядит вот так:

199
ASP.Net Core Web API единый формат ответов

ASP.Net Core Web API единый формат ответов

Собственно вопрос в тайтлеЧто я хочу: единый формат ответов от API как у VK

286
Проблема с анимацией в Unity3d

Проблема с анимацией в Unity3d

Прилагаю скриншот проблемы

323