【发布时间】:2018-05-14 18:15:41
【问题描述】:
我正在使用 Laravel 5.6 和 Instagram API library。
要使用这个 Instagram API,我需要创建对象 $ig = new \InstagramAPI\Instagram()。然后为了获取任何用户的信息,我必须每次都使用$ig->login('username', 'password')。
所以我不想一直使用这个功能。首先我想创建一个包含$ig = new \InstagramAPI\Instagram() 的全局变量。但是,我不知道如何正确地做到这一点。
-
我尝试使用singleton:
$this->app->singleton(Instagram::class, function ($app) { Instagram::$allowDangerousWebUsageAtMyOwnRisk = true; // As wiki says return new Instagram(); });当我在任何方法中调用
$ig->login('name', 'pass')时,所有用户配置文件的信息在此对象中都发生了变化,但是如果我在另一个控制器方法中调用dd($ig = app(Instagram::class)),我发现以前的数据没有保存。 “WTF?” - 我说。有人告诉我 singleton 只是向我保证不会创建相同的对象,但它不会保存任何更改。
-
我尝试使用sessions:
但是,当我尝试将变量设置为对象作为值时,没有发生任何事情。
$ig = new \InstagramAPI\Instagram(); session(['ig' => $ig]);我想是因为我试图放一个大的物体。 另一方面,这不是安全的方法!
请告诉我:
如何创建一个可以在每个方法中使用的对象,并为下一步操作保存更改?
【问题讨论】:
-
您确定您使用的是正确的存储空间吗,check this。
-
那里说:如果你想使用mySQL存储...。 IF 但是,我不想使用 mysql :D
-
你是如何设置单例的?单身人士应该可以解决这个问题,所以我想知道它是否没有正确注册。
-
@jfadich,更新问题。我不明白为什么对象的属性没有改变..?
-
我就是这么想的。您想在单例寄存器调用中调用
$ig->login('name', 'pass')。函数的结果是传递给函数的结果,您在注入后所做的任何更改都不会传播回容器中。
标签: php laravel instagram-api