Почему один и тот же PHP код вызывает синтаксическую ошибку?

xintrea

Новичок
Пишу вот такой кусочек кода:
Код:
<?php
 $fontFile = 'fonts/'.array('caveman.gdf', 'automatic.gdf', 'bubblebath.gdf', 'crass.gdf')[rand(0,3)];
 echo $fontFile;
?>
Он работает, и выводит рандомные имена файлов.

Оформляю его же в виде класса:
Код:
<?php

class Sample
{
  var $fontFile = 'fonts/'.array('caveman.gdf', 'automatic.gdf', 'bubblebath.gdf', 'crass.gdf')[rand(0,3)];

  function printFont()
  {
    echo $this->fontFile;
  }
}

s=new Sample;
s.printFont();

?>
И получаю ошибку:
Код:
PHP Parse error:  syntax error, unexpected '(' in sample_02.php on line 5
Ошибка в строке инициализации var $fontFile.

Почему так? Как исправить?
 
Последнее редактирование:

Breeze

goshogun
Команда форума
Партнер клуба
не использовать такую конструкцию.
var тоже не использовать.

у тебя вообще каша полная в коде.
 

xintrea

Новичок
Тебе не нравится var? Это кусок класса из PunBB. Но вообще, ты не знаешь в чем проблема.
 

Фанат

oncle terrible
Команда форума
Вообще он знает в чем проблема. И каша в коде действительно жесть, но это уже следующий твой косяк.
А для решения этого перенеси инициализацию переменной в конструктор

И никогда не приводи в оправдание говнокод, который был написан когда твоя бабушка на свидания с женихами бегала
 

ivanov77

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

Adelf

Administrator
Команда форума
Он из будущего. Там можно писать как угодно и компилятор поймет.
 
  • Like
Реакции: WMix

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
А я то думал, что видел уже все...
 

xintrea

Новичок
В конструкторе устанавливать св-во динамическим значением.
доки:
Очень странное ограничение. Php почему-то может выполнить eval, компилируя его параметр во время выполнения, но при этом не может компилировать во время выполнения инициализирующее выражение.
 

scorpion-ds

Новичок
Код надо поправить, там несколько потенциальных "проблемок", в таком виде он все равно работать не будет и не пытайся никого уговорить, что он может работать или где-то работает.
 
Сверху