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

Есть один класс и две функции внутри него. Во второй функции нужно значение переменной, которая получается из функции №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();

Ответы (1 шт):

Автор решения: vp_arth

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

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();
→ Ссылка