Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Что значит static переменная в классах?
Покинул форум
Сообщений всего: 71
Дата рег-ции: Июль 2010
Помог: 0 раз(а)
Что она делает в функциях, я знаю. Но по поводу классов что-то я не нашел информации.
Какая разница будет между public $var и public static $var в классе?
LIME
Отправлено: 25 Июля, 2011 - 19:28:05
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
смысл тот-же что и в ф-циях
1 переменная для всех объектов класса(инстансов) (Добавление)
общая
White
Отправлено: 25 Июля, 2011 - 19:29:37
Частый посетитель
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
Помог: 28 раз(а)
Это переменная объявленная в контексте класса а не обьекта в отличие от var. И доступна она только через класс, например some_class::$static_var или self::$static_var(внутри класса) (Добавление) LIME а что будет если попробовать ее вызвать через объект?
----- if(time()>1356048000) die();
Roler
Отправлено: 25 Июля, 2011 - 20:55:18
Посетитель
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
White
Если мне не изменяет память, всё будет нормально)
Просто значение этой переменной будет одинаковой для всех объектов класса - можно создавать счётчик живых объектов, допустим.
LIME
Отправлено: 25 Июля, 2011 - 21:29:26
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
White пишет:
LIME а что будет если попробовать ее вызвать через объект?
незнаю
даже пробовать неохота (Добавление)
создастся новая обычная? (Добавление)
а вот мне интересно static потому-что в статической области памяти ?
EuGen
Отправлено: 25 Июля, 2011 - 21:44:05
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Не создастся.
Статическое свойство класса статично и хранится в памяти.
При попытке вызова $object::STATIC_PROPERTY произойдет один из следующих вариантов:
0. PHP >=5.3 - $object будет интерпретировано как имя класса и, в случае существования класса с таким именем в доступном в текущий момент пространстве имён, произойдет обращение к указанному STATIC_PROPERTY
1. PHP <=5.2 - произойдёт ошибка
Ну вообще-то, в переводе на русский "T_PAAMAYIM_NEKUDOTAYIM" это четвероточие "::". Ошибка говорит что не должно быть этого знака, к static это не имеет никакого отношения.
можете проверить вставив в коде к примеру строчку ::$n;
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.