Вопрос пользователя Дмитрий Макух в уроке «Что такое данные?», курс «PHP: Построение абстракций»

Дмитрий Макух

Добрый день после просмотра видео где вы с помощью функций сделали новый тип данных(pair) у меня возник вопрос какая тогда разница между классом и функцией как типами данных

2 0

Дмитрий Макух

и еще одно мне кажется или действительно так есть что инкапсуляция в типе данных(pair) созданного с помощью функций лучше и понятнее (имею в виду она практически не может быть нарушенной) чем в класе с гетерами и сетерами

0

Александр О.

Добрый день! На самом деле с помощью демонстрируемого в уроках способа (посредством функций) можно создавать объекты, обладающие всеми основными свойствами, присущими объектам, так как это понимается по меркам ООП. При этом вы правильно подметили про инкапсуляцию - то, каким образом она организована в тех же парах, резко ограничивает в возможности каких-либо своевольных мутаций данных. Можно сказать, что сама структура "сопротивляется изменениям" и настраивает (на интуитивном уровне) программиста на правильный порядок работы.
Конечно, если смотреть на более низком, прикладном, уровне то различия между объектами, порождаемые разными способами, есть различия: например, классы при статической типизации не позволят использовать не существующие свойства, выдавая подробные и конкретные предупреждения, что не представляется возможной в данной реализации на функциях; так же в таких "функциональных" объектах невозможен автокомплит. Хотя это прикладные и частные особенности, всё же они довольно важны.

0

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».

Похожие вопросы

Сергей К. 09 января 2018 →

Поскажите, можно ли в php просматривать строковое содержание функции, как это делается в js? Например, Stri...

Александр Тарасов 29 декабря 2017 →

Доброго всем здоровья! Решил задачку. НО! 1. Про callable в курсе нету ничего. Если смотреть строго по пор...

Sergey Erofeev 27 октября 2017 →

Сильно! Ни когда не думал, что такие выкрутасы на PHP можно творить: // removed

Gleb Daychman 24 октября 2017 →

Решением является неочевидная конструкция. Честно говоря так и не нашел в документации, где описаны текущие...

Roman 21 мая 2017 →

1) Тема "Что такое данные?" - не понял в чем тут ответ? Данные это car и cdr? 2) Не понял, в чем смысл урок...