[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с вызовов статических методов
Страницы: 1, 2
tceburashka.com
Вызов статического свойства происходит так:
self:$variant

т.е. перед статическим свойством объязательно ставят знак - $
Исключения только для констант!

_____________
Парсинг - автоматизация ручной работы. http://tceburashka.com
casper - gg
Вспомнил, вот че:
class Test
{
public static $val;
public static $val['type']; // это строка 47

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 ты такой же мидл как и мы user posted image
tceburashka.com
Каспер Вы хоть поняли че Вы написали ?
Первый класс просто ужас. Декларировать в одном классе два одинаковых свойства, да еще и во втором свойстве сразу добавлять ключ?!!! Это просто гениально! У Вас компилятор как раз и руганулся, сказав, что Вы пытаетесь повторно объявить статическое свойство!
Во втором классе в цикле будет вызыватся постоянно статическое свойство self:$val, которое постоянно будет равно - null

_____________
Парсинг - автоматизация ручной работы. http://tceburashka.com
Michael
Цитата (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
Цитата (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; // строка 54
}
}


Test::browse();

Цитата
Fatal error: Access to undeclared static property: Test::$val2 in C:\WebServers\home\biz\www\rules\test.php on line 54

а то что $ нужно ставить перед именем переменной, - это не к месту
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.