Доброго времени суток, у меня возник вот такой вопрос. Увидел у парня в коде в классе User приватное свойство и статистическое. к примеру: Код (Text): class User { private stasic $name; Функция { self::$name - обращение к ней } } Первый вопрос : зачем делать свойство приватным если оно статистиеское и к нему все равно можно обратится не создавая объект и зачем тогда так делать? А во вторых зачем нам нужно вообще статистическое свойство само по себе? Ведь можно просто создать переменную. И что потом с ним делать? Ладно понимаю статистический метод если он ожет делать какуюто вспомогательною фнкцию, но свойство зачем? Обьясните мне пожалуйста я вот что то не догоняю на живом примре если можно.
Чтоб нельзя было обратиться за пределами класса. На статические свойства модификаторы доступа оказывают такое же действие. Ну во-первых статическое свойство всё-таки немного локализуется уже, даже если оно публичное, поскольку перед ним надо писать имя класса. Т.е. оно уже не засоряет глобальное пространство, и если мы вместе работаем над проектом, и ты завёл в своём классе статическое свойство name, а я завёл в своём такое же свойство, это будут гарантировано две разных переменные. А с глобальной переменной - мы попадём в большие неприятности. Одна из причин, почему глобальные переменные - зло. Во-вторых, иногда бывает так, что нужно хранить какое-то общее значение - какие-нибудь счётчики, справочные данные, актуальные всегда и т.п, но имеющие отношение к классу, а не просто так. для таких целей и были придуманы статические поля.
Почему столь категорично? Мало ли какой алгоритм надо будет запрограммировать (я сейчас не про синглтон, а про поле) --- Добавлено --- Хотя, если честно, я не помню, чтоб я использовал их. Даже когда делал синглтоны, я всегда писал статическую локальную переменную. Но мало ли, может где вдруг и всплывёт задача, которую удобно будет решить именно так