Как избавится от синтаксической ошибки (PHP)

R
На сайте с 13.06.2009
Offline
47
2007



define('OPTIONS', ROOT_DIR.'/options/');

class Class2 extends Classs1
{
protected static $_fileName = OPTIONS.'options.php';
}

Почему, ругается на синтаксическую ошибку в этой строке: protected static $_fileName = OPTIONS.'options.php');

Ругается на точку '.' ну ведь вроде все правильно, как можно записать, чтобы не ругалось (но чтобы константа осталась за пределами класса).

Str01tel
На сайте с 27.12.2009
Offline
26
#1

s.php');

10 символов

R
На сайте с 13.06.2009
Offline
47
#2
Str01tel:
s.php');
10 символов

Сори это я опечатался - скобки нет. И еще раз повторюсь.

Ругается на точку '.' ну ведь вроде все правильно, как можно записать, чтобы не ругалось (но чтобы константа осталась за пределами класса).

Т.е. проблемы с конкатенацией.

dvaes
На сайте с 03.09.2007
Offline
65
#3

в конструктор запихайте

tester999
На сайте с 21.10.2004
Offline
149
#4
recrut:

Ругается на точку '.'

Реквестую как именно ругается. По-англицки.

R
На сайте с 13.06.2009
Offline
47
#5
dvaes:
в конструктор запихайте

Да, это я все понимаю, но меня именно интересует возможность какой не то правильной (рабочей) возможности записи этого варианта.

tester999:
Реквестую как именно ругается. По-англицки.

По англицки так Parse error: syntax error, unexpected '.', expecting ',' or ';'

Т.е. парсер ждет ',' или ';' (как я понял). Вообще я вроде бы уже все испробовал не выходит ничего.

tester999
На сайте с 21.10.2004
Offline
149
#6

Полистал мануалы, пишуть такое:

Статические переменные инициализируются еще до начала работы конструктора, но при инициализации можно использовать только константные выражения

где "константные выражения" - это цифры и буквы, но не переменные или действия над ними.

Может в этом дело? Если убрать модификатор static, ошибка пропадает?

dvaes
На сайте с 03.09.2007
Offline
65
#7

да не пропадет. нельзя при инициализации использовать какое-то действие, функцию и т.д.

если вы озабочены именно инициализировать, то



define('OPTIONS', ROOT_DIR.'/options/');

class Class2 extends Classs1
{
protected static $_fileName = 'options.php';

function __construct()
{
self::$_fileName = OPTIONS . self::$_fileName;
}
}

R
На сайте с 13.06.2009
Offline
47
#8
dvaes:
да не пропадет. нельзя при инициализации использовать какое-то действие, функцию и т.д.

если вы озабочены именно инициализировать, то


define('OPTIONS', ROOT_DIR.'/options/');

class Class2 extends Classs1
{
protected static $_fileName = 'options.php';

function __construct()
{
self::$_fileName = OPTIONS . self::$_fileName;
}
}

Собственно похожим образом уже давно и сделал меня просто интересовал именно тот вариант.

tester999
На сайте с 21.10.2004
Offline
149
#9

Говорят можно и без конструктора, но суть не поменяется.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий