tceburashka.com
26.04.2016 - 14:10
Вызов статического свойства происходит так:
self:$variant
т.е. перед статическим свойством объязательно ставят знак - $
Исключения только для констант!
_____________
Парсинг - автоматизация ручной работы.
http://tceburashka.com
casper - gg
26.04.2016 - 14:25
Вспомнил, вот че:
class Test
{
public static $val;
public static $val['type'];
public static function browse()
{
echo self::$val;
echo self::$val['type'];
}
}
Test::browse();
выводит:
Цитата |
Fatal error: Cannot redeclare Test::$val in C:\WebServers\home\biz\www\rules\test.php on line 47 |
no coment! :D
И вторая ситуация:
$array = array('type1', 'type2', 'type3');
class Test
{
public static $val;
public static function browse($arr)
{
foreach( $arr as $val )
echo self::$val;
}
}
Test::browse($array);
$val в переборе никакого отношения к self::$val не имеет и наоборот. так что
tceburashka.com ты такой же
мидл как и мы
tceburashka.com
27.04.2016 - 00:04
Каспер Вы хоть поняли че Вы написали ?
Первый класс просто ужас. Декларировать в одном классе два одинаковых свойства, да еще и во втором свойстве сразу добавлять ключ?!!! Это просто гениально! У Вас компилятор как раз и руганулся, сказав, что Вы пытаетесь повторно объявить статическое свойство!
Во втором классе в цикле будет вызыватся постоянно статическое свойство self:$val, которое постоянно будет равно - null
_____________
Парсинг - автоматизация ручной работы.
http://tceburashka.com
Michael
27.04.2016 - 07:00
Цитата (tceburashka.com @ 26.04.2016 - 12:10) |
Вызов статического свойства происходит так: self:$variant
т.е. перед статическим свойством объязательно ставят знак - $ Исключения только для констант! |
Там речь не о св-ве.
В пхп можно вызывать методы через переменные, вот в доках:
http://php.net/manual/ru/functions.variabl...php#example-192
_____________
There never was a struggle in the soul of a good man that was not hard
casper - gg
27.04.2016 - 08:24
Цитата (tceburashka.com @ 27.04.2016 - 00:04) |
Каспер Вы хоть поняли че Вы написали ? |
хрен редьки не слаще
class Test
{
public static $val1;
public static $val2['type'];
public static function browse()
{
echo self::$val1;
echo self::$val2['type'];
}
}
Test::browse();
Цитата |
Parse error: syntax error, unexpected '[', expecting ',' or ';' in C:\WebServers\home\biz\www\rules\test.php on line 49 |
Если бы в таком варианте поддерживались массивы (ключи), то и тот первый скорее б сработал.
А второй вариант, это как раз и есть то что нужно было исправить ТС, вот только объявить self:$value['type'] нельзя, только self:$value.
Ну и а то что Вы имели ввиду про это:
Цитата (tceburashka.com @ 26.04.2016 - 14:10) |
Вызов статического свойства происходит так: self:$variant |
- это скорее к $method адресовано, поскольку в исходнике нет $variant, то там да, справедливо:
class Test
{
public static $val1='fruit';
public static function browse()
{
echo self::$val1;
$val2=self::$val1;
echo self::$val2;
}
}
Test::browse();
Цитата |
Fatal error: Access to undeclared static property: Test::$val2 in C:\WebServers\home\biz\www\rules\test.php on line 54 |
а то что $ нужно ставить перед именем переменной, - это не к месту