Класс const to $ variable - PullRequest
       8

Класс const to $ variable

0 голосов
/ 16 сентября 2018

У меня есть этот код:

class ContactIntegration {

  const P_DESCRIPTION = 'description here';
  const MAIL_SENT_TRIGGER = '7_mail_sent';

  public $form_data;

  public $default_payload = array(

      'form_origem' => self::P_DESCRIPTION
  );

Мне нужно изменить const P_DESCRIPTION = 'description here'; на const P_DESCRIPTION = $variable; или 'form_origem' => self::P_DESCRIPTION на 'form_origem' => $variable;.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Вы не можете установить константу класса или начальное значение свойства как результат чего-то динамического (например, переменную или результат функции) в PHP. Вместо этого вы должны использовать метод класса для установки свойства.

Например, это не разрешено:

<?php
$variable = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

class ContactIntegration {
    const P_DESCRIPTION = $variable;  // will cause an error

    public $default_payload = array(
        'form_origem' => $variable  // will also cause an error
    );
}

Вместо этого вы должны создать экземпляр вашего класса и сделать так, чтобы ваш конструктор (или другая функция) установил переменную:

<?php
$variable = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

class ContactIntegration {
    public $default_payload = array();

    function __construct($formOrigem) {
        $this->default_payload['form_origem'] = $formOrigem;
    }
}

$contactIntegration = new ContactIntegration($variable);
0 голосов
/ 16 сентября 2018

Надеюсь, это то, что вы хотите.

class ContactIntegration {

  public static $variable= 'Any variable';
  const MAIL_SENT_TRIGGER = '7_mail_sent';

  public $form_data;

  public $default_payload = array(

      'form_origem' => self::$variable
  );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...