【问题标题】: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】:

    使用类属性并通过selfstatic 访问:

    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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      相关资源
      最近更新 更多