HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Аналогом структур из Си в PHP являются классы (как вы увидите позже, классы устроены намного сложнее). По крайней мере, в первом приближении.</p>
1 <p>Аналогом структур из Си в PHP являются классы (как вы увидите позже, классы устроены намного сложнее). По крайней мере, в первом приближении.</p>
2 <p>Определение класса подозрительно похоже на определение структуры. За ключевым словом class следует имя класса, затем в фигурных скобках перечисляются элементы класса. Если в структурах их элементы назывались членами, то в PHP их принято называть свойствами. Такое именование характерно для большинства классовых языков. В PHP классы должны начинаться с заглавной буквы.</p>
2 <p>Определение класса подозрительно похоже на определение структуры. За ключевым словом class следует имя класса, затем в фигурных скобках перечисляются элементы класса. Если в структурах их элементы назывались членами, то в PHP их принято называть свойствами. Такое именование характерно для большинства классовых языков. В PHP классы должны начинаться с заглавной буквы.</p>
3 <p>Одно из отличий классов от структур связано с наличием встроенного механизма защиты данных. Ключевое слово public делает свойства публичными, то есть доступными снаружи для чтения и модификации. Это поведение аналогично тому, как ведут себя элементы структур. Кроме public есть и другие варианты, но мы их рассмотрим позже, когда поговорим об инкапсуляции и методах.</p>
3 <p>Одно из отличий классов от структур связано с наличием встроенного механизма защиты данных. Ключевое слово public делает свойства публичными, то есть доступными снаружи для чтения и модификации. Это поведение аналогично тому, как ведут себя элементы структур. Кроме public есть и другие варианты, но мы их рассмотрим позже, когда поговорим об инкапсуляции и методах.</p>
4 <p>Определив класс, можно начать создавать объекты или, как их ещё называют, экземпляры (instance) класса. На текущий момент достаточно рассматривать объект как конкретную структуру данных с конкретными данными.</p>
4 <p>Определив класс, можно начать создавать объекты или, как их ещё называют, экземпляры (instance) класса. На текущий момент достаточно рассматривать объект как конкретную структуру данных с конкретными данными.</p>
5 <p>Создание объекта выглядит, как вызов функции, к которому добавили ключевое слово new, и как вы увидите позже, это, так и есть. В остальном всё работает, как и в структурах, только для разделения используется не точка, а стрелка. При обращении к свойствам знак $ перед именем свойства не ставится.</p>
5 <p>Создание объекта выглядит, как вызов функции, к которому добавили ключевое слово new, и как вы увидите позже, это, так и есть. В остальном всё работает, как и в структурах, только для разделения используется не точка, а стрелка. При обращении к свойствам знак $ перед именем свойства не ставится.</p>
6 <p>Если распечатать объект на экран print_r($point), то можно увидеть его структуру и значения всех свойств.</p>
6 <p>Если распечатать объект на экран print_r($point), то можно увидеть его структуру и значения всех свойств.</p>
7 <h2>Классы как рекурсивная структура данных</h2>
7 <h2>Классы как рекурсивная структура данных</h2>
8 <p>Как и в случае со структурами, значением свойства объекта может быть другой объект. Ограничений на вложенность никаких нет: объекты, содержащие объекты, которые содержат объекты - это нормально.</p>
8 <p>Как и в случае со структурами, значением свойства объекта может быть другой объект. Ограничений на вложенность никаких нет: объекты, содержащие объекты, которые содержат объекты - это нормально.</p>
9 <h2>Типы данных</h2>
9 <h2>Типы данных</h2>
10 <p>В PHP около 10 встроенных типов данных, с большинством которых мы уже знакомы, например со строками или массивами. Объекты в этом списке представлены типом object.</p>
10 <p>В PHP около 10 встроенных типов данных, с большинством которых мы уже знакомы, например со строками или массивами. Объекты в этом списке представлены типом object.</p>
11 <p>С другой стороны, каждый класс в PHP может рассматриваться как пользовательский тип данных, а его объекты-значения (инстансы) - как данные этого типа. На синтаксическом уровне классы наравне с обычными типами могут использоваться для описания входных и выходного типов данных функций.</p>
11 <p>С другой стороны, каждый класс в PHP может рассматриваться как пользовательский тип данных, а его объекты-значения (инстансы) - как данные этого типа. На синтаксическом уровне классы наравне с обычными типами могут использоваться для описания входных и выходного типов данных функций.</p>
12 <p>Такое определение вызовет ошибку при передаче в функцию любых посторонних данных.</p>
12 <p>Такое определение вызовет ошибку при передаче в функцию любых посторонних данных.</p>
13 <h2>Вывод</h2>
13 <h2>Вывод</h2>
14 <p>Классы - основной способ описывать программные абстракции в PHP; следовательно, объекты - основной способ их использования. Знакомиться с этими понятиями непросто из-за обилия новых терминов, конструкций языка и просто того, что PHP во многих аспектах с объектами ведёт себя не так, как с другими данными. Но просто выучить эти особенности недостаточно для понимания того, что такое ООП, и как писать в этом стиле. Эту ситуацию можно сравнить с игрой в шахматы. Знание, как ходят фигуры, не делает из вас шахматиста. Обучение самой игре - процесс долгий и достаточно сложный. Большая часть этого курса посвящена изучению базовых правил, а вот практика отрабатывается дальше в курсах, посвящённых веб-разработке и ORM. Поэтому не переживайте, что даже зная, как описывать классы и создавать объекты, вы ещё некоторое время не будете понимать, как создавать полноценные программы.</p>
14 <p>Классы - основной способ описывать программные абстракции в PHP; следовательно, объекты - основной способ их использования. Знакомиться с этими понятиями непросто из-за обилия новых терминов, конструкций языка и просто того, что PHP во многих аспектах с объектами ведёт себя не так, как с другими данными. Но просто выучить эти особенности недостаточно для понимания того, что такое ООП, и как писать в этом стиле. Эту ситуацию можно сравнить с игрой в шахматы. Знание, как ходят фигуры, не делает из вас шахматиста. Обучение самой игре - процесс долгий и достаточно сложный. Большая часть этого курса посвящена изучению базовых правил, а вот практика отрабатывается дальше в курсах, посвящённых веб-разработке и ORM. Поэтому не переживайте, что даже зная, как описывать классы и создавать объекты, вы ещё некоторое время не будете понимать, как создавать полноценные программы.</p>