Вы не можете использовать константы, функции или другие переменные при предварительном определении переменных класса. Определения классов подобны чертежам, они должны быть полностью независимы от всего остального, что происходит в сценарии (за исключением зависимостей от других классов, конечно.)
Вам придется задать это позже, например, в конструкторе:
class AdminEmail extends Email {
private $from;
function __construct()
{
$this->from = "jsmith".URL;
}
или в отдельной функции:
function setFrom($from)
{
$this->from = $from;
}
Вы можете использовать константы, но не функции или другие переменные, при предварительном определении переменных класса. Также нельзя использовать такие операторы, как .
Оператор конкатенации точечной строки.
Подробности см. В 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;
}