Ошибка анализа, когда concat'ing определенная переменная и строка в [закрытом] классе

7
задан Brian Tompsett - 汤莱恩 27 November 2015 в 16:58
поделиться

2 ответа

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

Вам придется задать это позже, например, в конструкторе:

class AdminEmail extends Email {

   private $from;

   function __construct()
   {
     $this->from = "jsmith".URL;
   }

или в отдельной функции:

   function setFrom($from)
    {
     $this->from = $from;
    }
17
ответ дан 6 December 2019 в 10:47
поделиться

Вы можете использовать константы, но не функции или другие переменные, при предварительном определении переменных класса. Также нельзя использовать такие операторы, как . Оператор конкатенации точечной строки.

Подробности см. В PHP OO Manual . Обратите внимание, что вы можете использовать конструкцию array () при предварительном определении переменных класса. array () - это не функция, а языковая конструкция.

В этом случае у вас действительно есть два пути на выбор в качестве решения. Вы можете определить значение в конструкторе:

class AdminEmail extends Email {

  private $from;

  function __construct()
  {
     $this->from = "jsmith".URL;
  }

Другое решение - всегда извлекать значение с помощью функции:

class AdminEmail extends Email {

  private $from;

  function getFrom()
  {
     if (null === $this->from) {
         $this->from = "jsmith" . URL;
     }
     return $this->from;
  }
1
ответ дан 6 December 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: