@mIndix

Как инициализировать из __construct в static?

Мне нужно получить $url в static классе, подскажите пожалуйста, как это можно правильно реализовать?
class WhatsApp {
public function __construct($limit='',$url='', $method='') {
    $this->limit = $limit;
    $this->url = $url;
   }
public static function test() {
      //$url = self::__construct();
      return $url;
   }
}
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 2
В статическом классе нет магического метода `__construct`. Но вы можете использовать функцию, к примеру `instance()`, в функции `instance()` будет всё то же самое, что и в `__construct`, за некоторыми исключениями.

Пример кода:

class WhatsApp
{
    private static ?WhatsApp $instance = null;
    private static string $limit;
    private static string $url;


    public static function instance(string $limit = '', string $url = '', string $method = ''): WhatsApp
    {
        if (self::$instance === null) {
            self::$limit = $limit;
            self::$url = $url;

            self::$instance = new self();
        }

        return self::$instance;
    }

    public static function test(): string
        return self::$url;
    }
}


Обратите внимание на то, что `instance` возвращает экземпляр нашего класса, то есть `self` или же `WhatsApp`.
Вызвать всё это чудо можно с помощью:
WhatsApp::instance('0', '/page?15')->test();
Ответ написан
@pantsarny
Static классов не существует в пхп, в классе могут быть статик методы и атрибуты
Вам надо определить static атрибут, его значение вы собираетесь задавать в __construct, ну а получать доступ к нему сможете из статик метода static::$url
Или self::$url
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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