PHP: Введение в ООП
Теория: Классы
Аналогом структур из Си в PHP являются классы (как вы увидите позже, классы устроены намного сложнее). По крайней мере, в первом приближении.
Определение класса подозрительно похоже на определение структуры. За ключевым словом class следует имя класса, затем в фигурных скобках перечисляются элементы класса. Если в структурах их элементы назывались членами, то в PHP их принято называть свойствами. Такое именование характерно для большинства классовых языков. В PHP классы должны начинаться с заглавной буквы.
Одно из отличий классов от структур связано с наличием встроенного механизма защиты данных. Ключевое слово public делает свойства публичными, то есть доступными снаружи для чтения и модификации. Это поведение аналогично тому, как ведут себя элементы структур. Кроме public есть и другие варианты, но мы их рассмотрим позже, когда поговорим об инкапсуляции и методах.
Определив класс, можно начать создавать объекты или, как их ещё называют, экземпляры (instance) класса. На текущий момент достаточно рассматривать объект как конкретную структуру данных с конкретными данными.
Создание объекта выглядит, как вызов функции, к которому добавили ключевое слово new, и как вы увидите позже, это, так и есть. В остальном всё работает, как и в структурах, только для разделения используется не точка, а стрелка. При обращении к свойствам знак $ перед именем свойства не ставится.
Если распечатать объект на экран print_r($point), то можно увидеть его структуру и значения всех свойств.
Классы как рекурсивная структура данных
Как и в случае со структурами, значением свойства объекта может быть другой объект. Ограничений на вложенность никаких нет: объекты, содержащие объекты, которые содержат объекты — это нормально.
Типы данных
В PHP около 10 встроенных типов данных, с большинством которых мы уже знакомы, например со строками или массивами. Объекты в этом списке представлены типом object.
С другой стороны, каждый класс в PHP может рассматриваться как пользовательский тип данных, а его объекты-значения (инстансы) — как данные этого типа. На синтаксическом уровне классы наравне с обычными типами могут использоваться для описания входных и выходного типов данных функций.
Такое определение вызовет ошибку при передаче в функцию любых посторонних данных.
Вывод
Классы — основной способ описывать программные абстракции в PHP; следовательно, объекты — основной способ их использования. Знакомиться с этими понятиями непросто из-за обилия новых терминов, конструкций языка и просто того, что PHP во многих аспектах с объектами ведёт себя не так, как с другими данными. Но просто выучить эти особенности недостаточно для понимания того, что такое ООП, и как писать в этом стиле. Эту ситуацию можно сравнить с игрой в шахматы. Знание, как ходят фигуры, не делает из вас шахматиста. Обучение самой игре — процесс долгий и достаточно сложный. Большая часть этого курса посвящена изучению базовых правил, а вот практика отрабатывается дальше в курсах, посвящённых веб-разработке и ORM. Поэтому не переживайте, что даже зная, как описывать классы и создавать объекты, вы ещё некоторое время не будете понимать, как создавать полноценные программы.
Рекомендуемые программы
Завершено
0 / 18
.png)


