@evgeniy0090

Как уничтожить статический класс в php?

Вопрос озвучен могу, тут могу лишь дать пояснения что я имею ввиду. Вот класс обрертка curl
<?php
class Curl
{
  protected static $curl;
  private $ch;

  private $user_agent;
  private $http_header = [];
  private $proxy;
  private $proxy_type;

  public function __construct()
  {
    $this->ch = curl_init();
    curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION , true);
    curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($this->ch, CURLOPT_TIMEOUT, 60);
    curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT, 30);
  }

  public function __destruct()
  {
		if (isset($this->ch)) {
      curl_close($this->ch);
    }
	}

  public static function init()
  {
    return (is_null(self::$curl)) ?
      self::$curl = new self :
      self::$curl;
  }

  /**
  * Установка user-agent
  **/
  public function setUserAgent($user_agent)
  {
    $this->user_agent = $user_agent;
  }
 //...
  public function clear()
  {
    self::$curl = null;
  }
}


вот вызов
$curl = Curl::init();
$curl->setUserAgent('Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0');
echo $curl->post('https://httpbin.org/user-agent');
$curl->clear();
echo $curl->user_agent; // почему данная переменная не ровна нулю?!


и вывод
user@debian:~/projects/myscr$ php myscr.php
{
  "user-agent": "Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0"
}
Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
user@debian:~/projects/myscr$

echo $curl->user_agent; - почему переменная не уничтожается ведь self::$curl = null?
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 2
BojackHorseman
@BojackHorseman Куратор тега PHP
...в творческом отпуске...
потому что присвоение null статическому свойству Curl::$curl никак не влияет на значение свойства user_agent объекта $curl, в которое вы сами записали соответствующую строку
Ответ написан
@d-sem
Потому что self::$curl и $curl->user_agent разные переменные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы