HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В классовых языках, таких как PHP, часто встречается понятие "статика". Статикой называют статические свойства либо статические методы. Что это и зачем нужно - далее в уроке.</p>
1 <p>В классовых языках, таких как PHP, часто встречается понятие "статика". Статикой называют статические свойства либо статические методы. Что это и зачем нужно - далее в уроке.</p>
2 <p><em>Хочу сразу расставить точки над i. Статические свойства и методы не являются фундаментальной фичей объектно-ориентированного программирования, скорее наоборот - они появляются вследствие ограничений, накладываемых классами. При этом они довольно часто используются и поэтому включены в базовый курс по ООП.</em></p>
2 <p><em>Хочу сразу расставить точки над i. Статические свойства и методы не являются фундаментальной фичей объектно-ориентированного программирования, скорее наоборот - они появляются вследствие ограничений, накладываемых классами. При этом они довольно часто используются и поэтому включены в базовый курс по ООП.</em></p>
3 <p>Статическое свойство, в отличие от обычного свойства, принадлежит классу, а не экземпляру. С точки зрения синтаксиса отличие только лишь в дополнительном ключевом слове static.</p>
3 <p>Статическое свойство, в отличие от обычного свойства, принадлежит классу, а не экземпляру. С точки зрения синтаксиса отличие только лишь в дополнительном ключевом слове static.</p>
4 <p>Если попробовать обратиться к нему через объект, используя -&gt;, то возникнет ошибка.</p>
4 <p>Если попробовать обратиться к нему через объект, используя -&gt;, то возникнет ошибка.</p>
5 <p>Статическое свойство не принадлежит объекту. Основной способ обращения к статическому свойству похож на то, как мы обращались к константам. Статические свойства, подобно обычным свойствам, имеют область видимости. Их всегда можно сделать приватными.</p>
5 <p>Статическое свойство не принадлежит объекту. Основной способ обращения к статическому свойству похож на то, как мы обращались к константам. Статические свойства, подобно обычным свойствам, имеют область видимости. Их всегда можно сделать приватными.</p>
6 <p>В отличие от констант, свойства требуют наличия знака $. Только не перепутайте: $table - это не имя переменной, а имя статического свойства.</p>
6 <p>В отличие от констант, свойства требуют наличия знака $. Только не перепутайте: $table - это не имя переменной, а имя статического свойства.</p>
7 <p>К свойствам всё же можно обращаться, используя объекты, но это лишь<em>синтаксический сахар</em>. Объект в таком вызове используется только как способ понять, что это за тип.</p>
7 <p>К свойствам всё же можно обращаться, используя объекты, но это лишь<em>синтаксический сахар</em>. Объект в таком вызове используется только как способ понять, что это за тип.</p>
8 <p>Такая возможность открывает доступ к<em>полиморфизму</em>, о котором мы ещё будем разговаривать.</p>
8 <p>Такая возможность открывает доступ к<em>полиморфизму</em>, о котором мы ещё будем разговаривать.</p>
9 <p>К статическим свойствам можно обращаться не только снаружи, но и внутри объектов этого же типа. Как и в случае констант, есть два способа. Первый показан выше, когда мы указываем полное имя класса, второй способ использует уже знакомый нам self:</p>
9 <p>К статическим свойствам можно обращаться не только снаружи, но и внутри объектов этого же типа. Как и в случае констант, есть два способа. Первый показан выше, когда мы указываем полное имя класса, второй способ использует уже знакомый нам self:</p>
10 <h2>Зачем?</h2>
10 <h2>Зачем?</h2>
11 <p>Основная цель статических свойств - хранить информацию о типе в целом, безотносительно его экземпляров. Таким приёмом часто пользуются для связи сущностей предметной области с базой данных. Например, в статическом свойстве удобно (но не всегда правильно) хранить имя соответствующей таблицы в базе данных. В случае с User выше, таблица называется users. Подобная возможность активно используется в<strong>ORM</strong>(фреймворк для отображения сущностей предметной области из базы в код и обратно).</p>
11 <p>Основная цель статических свойств - хранить информацию о типе в целом, безотносительно его экземпляров. Таким приёмом часто пользуются для связи сущностей предметной области с базой данных. Например, в статическом свойстве удобно (но не всегда правильно) хранить имя соответствующей таблицы в базе данных. В случае с User выше, таблица называется users. Подобная возможность активно используется в<strong>ORM</strong>(фреймворк для отображения сущностей предметной области из базы в код и обратно).</p>
12 <p>В идеале статические свойства класса должны инициализироваться при старте программы и никогда не меняться. Ведь статическое свойство по своим характеристикам является глобальной переменной. Если сохранять туда временные данные и менять их, то очень просто создать трудноподдерживаемый код с большим числом ошибок.</p>
12 <p>В идеале статические свойства класса должны инициализироваться при старте программы и никогда не меняться. Ведь статическое свойство по своим характеристикам является глобальной переменной. Если сохранять туда временные данные и менять их, то очень просто создать трудноподдерживаемый код с большим числом ошибок.</p>
13 <p>По этой причине статические свойства часто делают приватными, а доступ снаружи оставляют через<em>статические методы</em>, о которых мы поговорим в следующем уроке.</p>
13 <p>По этой причине статические свойства часто делают приватными, а доступ снаружи оставляют через<em>статические методы</em>, о которых мы поговорим в следующем уроке.</p>