[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не понимаю: структура и тип класса
vladimirsh_php
Здравствуйте.
Начал читать и вникать в книгу:
"PHP Объекты, шаблоны и методики программирования" Мэтт Зандстра" - 4 издание.

Встретил там такое предложение, котоое не лезет в моё понимание:
"При этом трейт изменяет структуру этого класса, но не меняет его тип." на странице 76.

Мне не понятно: что такое структура и тип класса?
Чем они отличаются?

Спасибо.
jetistyum
Это же не книжный клуб, вы бы скрин страницы скинули, чтобы понятен был контекст фразы.
jetistyum
хотя, скорее всего имеется в виду что с помощью трейта добавляются новые методы, свойства класса, при этом сам объекты остаются все того же типа.
Игорь_Vasinsky
трейт это родитель. с помощью трейтов в php наконец-то организовали множественное наследование.

каждый наследник получает доступ к методам родителя и это никак не влияет на сам объект исходного класса.

структура - это и есть набор методов и свойств класса.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Guest
А что такое тип класса?
Игорь_Vasinsky
Цитата
А что такое тип класса?

абстрактные, статические, интерфейсы

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Oyeme
Цитата
трейт это родитель. с помощью трейтов в php наконец-то организовали множественное наследование.


Почитай еще раз что это такое и для чего это назвали "Примесями".
Хотели бы сделать множественное наследование сделали бы как в питоне.
Игорь_Vasinsky
Цитата
трейт это родитель. с помощью трейтов в php наконец-то организовали множественное наследование.

в этом предложении я бы мог перед каждым словом поставить "псевдо", но делать этого не стал.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
SlavaFr
Цитата (Guest @ 11.10.2016 - 05:37)
А что такое тип класса?

biggrin.gif
Цитата (Игорь_Vasinsky @ 11.10.2016 - 03:34)
трейт это родитель. с помощью трейтов в php наконец-то организовали множественное наследование.

Треийт это не родитель, а отдельно существующий функционал, который с наследованием и типизированием не чего общего не имеет. По сути любые функции, которы могли бы использоваться в различных классах, лучше иметь в тейтах.
Как правило методы трейтов обявляют протектед для того, что бы ими ПОЛьЗОВАЛИСь в различных классах, но не выставляли эти методы как типы на показ.
Трейты невозможно сравнить с множественным наследованием, так как класс пользующийся третом не может иметь больше типов, чем при одиночном наследование.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
vladimirsh_php
Теперь вроде стало понятно:
"При этом трейт изменяет структуру этого класса, но не меняет его тип"

Структура - это т.е. методы или свойства этого класса.
Тип - public, private, или protected
Верно?

Трейты - это как выведенный за классы функционал, который при необходимости может использоваться/подключаться широким спектром классов и объектов.


з.ы.
Склоняюсь, что Мэтта Зандстру мне ещё рано или сложно читать.
Надо начать с чуть лёгкого и понятного.
Zzepish
vladimirsh_php
Цитата
Трейты - это как выведенный за классы функционал, который при необходимости может использоваться/подключаться широким спектром классов и объектов.

Угум. Это что-то вроде модуля, который можно пихнуть в любой класс.
SlavaFr
@vladimirsh_php
public, private или protected, это как бы не "тип", а "видимость".
В принципе "типом", является само название класса, интерфейса или примитивного типа.
К примеру int, double, float, string, DateTime, stdClass и любой другой интерфейс или класс это и есть "типы".
Исходя из контекста->"При этом трейт изменяет структуру этого класса, но не меняет его тип" то наверное имеется в виду "Структура", как внутенняя имплементация типа.
Мне кажется простоизошло неоднозначное описание "Структуры", так как публичные методы интерфейса тоже как бы можно назвать его структурой, хотя эта структура описывает "тип".
Когда ты начнёшь разбираться с интерфейсами и наследованием, то тебе станет всё более понятным...

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
chee
Цитата (vladimirsh_php @ 10.10.2016 - 23:29)
структуру этого класса

под структурой он понимал методы и свойства класса
Цитата (vladimirsh_php @ 10.10.2016 - 23:29)
его тип

под типом понимается сам класс, классы это по сути сложные типы данных. Когда мы определили класс, мы задали новый тип данных, подключая трейт мы не меняем заданный нами тип данных как в случае бы наследования, а просто добавляем к нему методов и свойств.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
vladimirsh_php
Цитата (chee @ 12.10.2016 - 09:49)
Цитата (vladimirsh_php @ 10.10.2016 - 23:29)
структуру этого класса

под структурой он понимал методы и свойства класса
Цитата (vladimirsh_php @ 10.10.2016 - 23:29)
его тип

под типом понимается сам класс, классы это по сути сложные типы данных. Когда мы определили класс, мы задали новый тип данных, подключая трейт мы не меняем заданный нами тип данных как в случае бы наследования, а просто добавляем к нему методов и свойств.

Спасибо, понял.
Я знал, что класс - это сложный тип данных, как int, string, array итд..
Сейчас сменил книгу на другую.
chee
Цитата (vladimirsh_php @ 12.10.2016 - 09:52)
Сейчас сменил книгу на другую.

правильное решение, сия книга зашквар полнейший.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.