Суть вопроса следующая.
Есть скрипт DB.php
final class DB extends DatabaseObject {
public static function Open($database = DBSettings::$DBNAME, $hostname = DBSettings::$HOST,
$hostport = DBSettings::$PORT, $username = DBSettings::$USER,
$password = DBSettings::$PASS) {
/* что-то*/
}
/*что-то*/
}
и DBSettings.php
static final class DBSettings {
public static final $HOST = "localhost";
public static final $DBNAME = "atata";
public static final $PORT = "3306";
public static final $USER = "root";
public static final $PASS = "root_pass";
public static final $ENCODING = "cp1251";
}
DB подтягивает DBSettings с помощью autoload.
Но я получаю ошибку...
Parse error: syntax error, unexpected T_VARIABLE, expecting T_STRING in /var/www/classes/Database/DB.php on line 7
Действительно ли так нельзя - использовать в качестве значения по умолчанию статичные свойста другого класса? Или я ошибаюсь и смотрю не туда?
Спустя 17 минут, 34 секунды (26.02.2012 - 19:44) Rand написал(а):
Цитата (tony733 @ 26.02.2012 - 22:26) |
нельзя - использовать в качестве значения по умолчанию статичные свойста другого класса |
И не только свойства класса. Значениями по умолчанию могут быть только константы.
Спустя 22 минуты, 36 секунд (26.02.2012 - 20:07) Игорь_Vasinsky написал(а):
Rand
только константы?
function alert($count, $say = 'Ахтунг!')
{
for($i = 0; $i<$count; $i++)
echo $say.'<br />';
}
alert(4);
только константы?
Спустя 9 минут, 8 секунд (26.02.2012 - 20:16) Placido написал(а):
Проблема в том, что свойства не могут объявляться как final.
Цитата |
Note: Properties cannot be declared final, only classes and methods may be declared as final. |
Спустя 1 час, 11 минут, 44 секунды (26.02.2012 - 21:27) Rand написал(а):
Игорь_Vasinsky
'Ахтунг!' - это строковая константа. А вот так нельзя:
Только константы и константные выражения.
'Ахтунг!' - это строковая константа. А вот так нельзя:
function foo() {
return 'Ахтунг!';
}
function bar($count, $say = foo()) {
for($i = 0; $i<$count; $i++)
echo $say.'<br />';
}
Только константы и константные выражения.
Спустя 3 минуты, 19 секунд (26.02.2012 - 21:31) Игорь_Vasinsky написал(а):
function foo() {
return 'Ахтунг!';
}
$var = foo();
function bar($count, $say = $var) {
for($i = 0; $i<$count; $i++)
echo $say.'<br />';
}
Спустя 6 минут, 49 секунд (26.02.2012 - 21:38) Rand написал(а):
Так нельзя ))
Спустя 1 минута, 34 секунды (26.02.2012 - 21:39) Игорь_Vasinsky написал(а):
да вкурсе) но написать решил.