PHP静态变量

PHP静态变量,php,Php,我有一个类,它执行一些API(REST)函数。我想声明变量类范围的变量和静态变量,所以我不会一次又一次地获取数据。(这是我在理论上认为可能是错误的)类中的许多方法都需要这些数据 我正在使用这种类型的类,但有些东西看起来不对劲。它正在工作,但是 (这只是一个示例类,不是真正的代码) 那么单例模式呢 class Some_Process { protected static $_instance; private $_tickets = array(); public stati

我有一个类,它执行一些API(REST)函数。我想声明变量类范围的变量和静态变量,所以我不会一次又一次地获取数据。(这是我在理论上认为可能是错误的)类中的许多方法都需要这些数据

我正在使用这种类型的类,但有些东西看起来不对劲。它正在工作,但是 (这只是一个示例类,不是真正的代码)


那么单例模式呢

class Some_Process {
   protected static $_instance;
   private $_tickets = array();

   public static function initialiaze() {
       $curl = curl_init();
       curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
       curl_setopt($curl, CURLOPT_URL, 'http://someurl');

       self::getInstance(json_decode(curl_exec($curl));
   }

   public static function getInstance($tickets = null) {
       if (!self::$_instance) {
            self::$_instance = new self($tickets);
       }

       return self::$_instance;
   }

   private function __constructor($tickets) {
       $this->_$tickets = $tickets;
   }

   public function getTickets() {
       return $this->_tickets;
   }

   public function processTickets() {
       $this->_tickets();
       ...
   }
}
使用单例模式,您只需实例化一次对象,就可以抓取一次票证

情商:


那么单例模式呢

class Some_Process {
   protected static $_instance;
   private $_tickets = array();

   public static function initialiaze() {
       $curl = curl_init();
       curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
       curl_setopt($curl, CURLOPT_URL, 'http://someurl');

       self::getInstance(json_decode(curl_exec($curl));
   }

   public static function getInstance($tickets = null) {
       if (!self::$_instance) {
            self::$_instance = new self($tickets);
       }

       return self::$_instance;
   }

   private function __constructor($tickets) {
       $this->_$tickets = $tickets;
   }

   public function getTickets() {
       return $this->_tickets;
   }

   public function processTickets() {
       $this->_tickets();
       ...
   }
}
使用单例模式,您只需实例化一次对象,就可以抓取一次票证

情商:


有一个问题,如果实际退票数量为零,该怎么办?然后,
如果(!self::$tickets)
将始终为真,即使我们已经填充了数组。我将使用
null
初始化
$tickets

private static $tickets = null;
并将该条件更改为:

if( self::$tickets === null ) {
    self::$tickets = array();
    ...
}

有一个问题,如果实际退票数量为零,该怎么办?然后,
如果(!self::$tickets)
将始终为真,即使我们已经填充了数组。我将使用
null
初始化
$tickets

private static $tickets = null;
并将该条件更改为:

if( self::$tickets === null ) {
    self::$tickets = array();
    ...
}
这很好:)我会返回self::$tickets,而不是布尔值,但这可能只是一个品味的问题。谢谢:)实际上我的函数是设置变量的数量(我已经把它简化了)。这就是我返回布尔值的原因。这很好:)我会返回self:$tickets,而不是布尔值,但这可能只是口味的问题。谢谢:)实际上,我的函数是设置变量的数量(我已经将其简化了)。这就是我返回布尔值的原因。