Сохранение объекта в сеансе или cookie - PullRequest
0 голосов
/ 13 мая 2018

Я использую библиотеки API Instagram , чтобы подключить пользователя к профилю Instagram, а затем что-то с ним сделать. Итак, как гласит Instagram API вики:

После инициализации класса InstagramAPI необходимо войти в учетную запись.

$ig = new \InstagramAPI\Instagram(); 
$ig->login($username, $password); // Will resume if a previous session exists.

Я инициализировал класс InstagramAPI, а затем позвонил $ig->login('username', 'password');. Но я должен вызывать его в каждой функции, где мне нужно работать с Instagram ...

Так, как я могу сохранить этот объект $ig для использования в будущем на других контроллерах, не вызывая больше login()? Могу ли я сохранить объект $ig в файле сессии или файла cookie?

P.S. Я думаю, что сохранение в сессии не является безопасным способом решить эту проблему.

UPD : Я пытался сохранить объект $ig в сеансе, однако размер, если он очень большой, и сеанс также перестали работать.

1 Ответ

0 голосов
/ 13 мая 2018

Что касается метода register, который вы задали в разделе комментариев, все, что вам нужно для создания нового класса поставщика услуг *1003* в вашем каталоге app\providers и объявления там метода register, например:

namespace App\Providers;

use InstagramAPI\Instagram;
use Illuminate\Support\ServiceProvider;

class InstagramServiceProvider extends ServiceProvider
{
    public function register()
    {
        // Use singleton because, always you need the same instance
        $this->app->singleton(Instagram::class, function ($app) {
            return new Instagram();
        });
    }
}

Затем добавьте только что созданный класс InstagramServiceProvider в массив providers внутри файла config/app.php, например:

'providers' => [
    // Other ...
    App\Providers\InstagramServiceProvider::class,
]

Теперь, в любом классе контроллера,всякий раз, когда вам нужен экземпляр Instagram, все, что вам нужно для вызова App::make('InstagramAPI\Instagram') или просто для вызова глобальной функции app('InstagramAPI\Instagram'), или даже вы можете typehint класс в любом методе / конструкторе и т. д. Некоторые примеры:

$ig = App::make('InstagramAPI\Instagram');
$ig = App::make(Instagram::class); // if has use statement at the top fo the class
$ig = app('...');

В методе класса в качестве зависимости:

public function someMethod(Instagram $ig)
{
    // You can use $ig here
}

Надеюсь, это поможет, но прочитайте документацию правильно, там все документируется.

...