【问题标题】:Assign API connection to variable in class and use across closures将 API 连接分配给类中的变量并跨闭包使用
【发布时间】:2018-06-20 00:41:47
【问题描述】:
我想使用通过 API 连接分配的 $api 变量:
$api = ApiFactory::create('Token_String');
跨类内的所有闭包:
class ApiConnection
{
public static function getSampleData()
{
$api->getDataResource();
}
public static function getAnotherData()
{
$api->getAnotherResource();
}
}
这可能吗?谢谢!
【问题讨论】:
标签:
php
api
class
closures
【解决方案1】:
使用类属性并通过self 或static 访问:
class ApiConnection
{
public static $api = null; //or private / protected
public static function connect($token)
{
self::$api = ApiFactory::create($token);
}
public static function getSampleData()
{
if(!self::$api) { self::connect(); }
self::$api->getDataResource();
}
public static function getAnotherData()
{
if(!self::$api) { self::connect(); }
self::$api->getAnotherResource();
}
}
然后:
ApiConnection::connect('Token_String'); //optional
ApiConnection::getSampleData();
使用对象:
class ApiConnection
{
public $api = null; //or private / protected
public function __construct($token)
{
$this->api = ApiFactory::create($token);
}
public function getSampleData()
{
$this->api->getDataResource();
}
public function getAnotherData()
{
$this->api->getAnotherResource();
}
}
然后:
$A = new ApiConnection('Token_String');
$A->getSampleData();