Объясните почему так работает php код.

php

есть класс, в нем есть функция, вот так она начинается
public static function makeInstance($className) {
// holds references of singletons
static $instances = array();
print_r($instances);
print_r почему-то выводит непустой массив, методов __get и __set в классе нет. Как такое может быть?

Примечание:
Lunx
1. я понимаю, что этой строчкой объявляется пустой массив, но почему когда я на следующей строке вывожу его содержимое, то там появляются данные?
2. Переменная используется в последствии, я привёл только начало функции.

Примечание:
Epsiloncool
спасибо, теперь всё ясно
Ответы:
1. static $instances = array(); - этой строчкой ты и объявляешь пустой массив.
2. Зачем описывать функции локальную переменную если ее в последствии не используешь?
Это статическая переменная. Этот класс статический, т.е. объект такого класса будучи однажды созданным сохраняется на протяжении всей работы скрипта. Статическая переменная такого класса также сохраняется.
По всей видимости в твоём случае кто-то уже создал этот статический объект и что-то записал в $instances, поэтому эти данные там и лежат.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.