В php 5.4 появились типажи (Страница 1) / Программирование / Форум StopLinux

Объявление

Kwork.ru - услуги фрилансеров от 500 руб.

#1 24-10-11 06:13:31

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 14.0.835.202

В php 5.4 появились типажи

В свежей бете php 5.4 появились типажи - набор свойств, которые можно подключать к каким-либо разнообразным классам.

//определение типажа
trait Pprint 
{
    public function whoAmI()
    {
        return get_class($this);
    }
}

class MyClass
{
    use Pprint; //подключаем типаж, ключевое слово use

    public function foo()
    {
        ...
    }

    public function bar()
    {
        ...
    }   
}

$a = new MyClass();
echo $a->whoAmI(), PHP_EOL; //=> MyClass

Типажами можно гибко управлять. Подробнее здесь: https://habrahabr.ru/blogs/php/130000/

Довольно полезная вещь при подготовке к поддержке аспектно-ориентированного программирования из коробки, не правда ли?

Неактивен

#2 24-10-11 08:01:45

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354
Windows 7Safari 534.12

Re: В php 5.4 появились типажи

Спорная вещь. Грязи в немытый пхп добавляет. Т.е.

1 - Требует читать чужой код типажей, вмето того, чтобы просто его использовать.
2 - Не дает возможности добавлять функционал типажами в класс, не читая код класса.
Т.е. классический маразм PHP от этого только прибавится.

Красивостей Extension methods - и близко нет. Хотя они и не совсем для того)))

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


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Неактивен

#3 24-10-11 13:31:39

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Я нифига не понял, разъясните что за фигня, создается какой-то особенный тип, в нем "кладутся" методы, потом в классе "use trait" "подключается" содержимое его, это типа интерфейсы и наследование как си шарпе?

Неактивен

#4 24-10-11 13:40:56

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

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

Tiphon пишет:

1 - Требует читать чужой код типажей, вмето того, чтобы просто его использовать.

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

Неактивен

#5 24-10-11 13:50:45

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Дестер, а секундочку, а базовые классы, интерфейсы делают одно и тоже, по крайней мере, они могу это делать, чем это хуже типажей?

Неактивен

#6 24-10-11 19:20:58

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

MOP3E пишет:

static class спасёт отца русской демократии. Впрочем, я даже понимаю, нахрена нужны эти тпажи - пыхпыхыч язык интерпретируемый.

Еще один похапе костыль?

MOP3E пишет:

Видимо, просто тупо нет возможности реализовать такое в пыхпыхе.

Это только говорит об ущербности и несостоятельности похапе.

Неактивен

#7 24-10-11 20:47:35

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

MOP3E, ты владеешь недостоверной или устаревшей много лет назад информацией. В php есть интерфейсы, абстрактные и финальные классы.

Babusha пишет:

Еще один похапе костыль?

Скорее плюшка. wink

Редактировался Дестер (24-10-11 20:47:53)

Неактивен

#8 24-10-11 21:21:39

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Дестер пишет:

Скорее плюшка.

Не, блин, ну ты можешь реально нормально объяснить что это и зачем это нужно? Просто полностью альтернативный вариант для реализации "базовой функциональности" я вижу вот такой вариант https://ideone.com/zF8T3
Чем он хуже? Нельзя нормально объяснить?

Неактивен

#9 24-10-11 21:49:48

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

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

Неактивен

#10 24-10-11 22:05:49

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Дестер пишет:

Babusha, насколько я понял, типажи позволяют вот такой код с повторяющимися кусками Foo и Bar записать вот так.

use Foo, Bar; // Это интересно

Т.е. реализовано множественное наследование? Не понимаю, если так нужно множественное наследование, то почему не сделать возможность наследовать сразу от нескольких классов? Зачем тогда придумали эти "типажи"? Ответь на вопрос, зачем?

Неактивен

#11 24-10-11 22:11:42

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Babusha пишет:

Ответь на вопрос, зачем?

Эмоции, как говорил клерик Тетраграмматона, - это плохо. smile
Типажами можно гибко управлять. Например, устанавливать алиасы. Прочитай статью на хабре, это интересно.

Неактивен

#12 24-10-11 22:20:47

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

pavel2403, лучше флудить про программирование, чем про труп диктатора.  wink

Неактивен

#13 24-10-11 22:23:25

mav
phantomas
Зарегистрирован: 29-05-11
Сообщений: 675
Windows 7Firefox 7.0

Re: В php 5.4 появились типажи

С Хабра, обсуждение критической ошибки в очередном релизе PHP:
muromec: хелллоу, май нейм из лииинус торвальц энд ай проноооунс похапе ин рашын эз РЕШЕТО


Мне больше HP Slate понравился. Его в большой карман можно положить, а у Apple - сковородка какая-то бестолковая. © Руслан Карманов, twitter (-;

Неактивен

#14 24-10-11 22:23:47

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Дестер пишет:

Типажами можно гибко управлять. Например, устанавливать алиасы. Прочитай статью на хабре, это интересно.

Не понимаю, если так нужно плодить сущности и делать алиасы, то почему тогда сразу не сделать алиасы для классов? Почему нет? А вообще, я против алиасов, во пытаешься разобрать код, везде написано SomeMethod(), а в неожиданном месте превращается в SMOLOLOL_HUI_PIZDA_DZHIGURDA(), ужас, неправда ли? Тем более свободу php`шникам давать вообще нельзя, php и так лидер по говнокоду. Потом тоже не могу понять, зачем нужны типажи, ведь нельзя вон тот твой код запихнуть в интерфейсы и так же их наследовать? Если честно, я вообще против множественного наследования
https://www.javaportal.ru/java/articles/mnj.html

Там описано для Java и C#, но для PHP все одно и тоже.

Даже процитирую:

один класс “A” является наследником двух других классов “B” и ”C”, причем и тот и другой наследуют класс “D”.

Добавлено спустя 01 мин 36 с:

pavel2403 пишет:

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

Пиздец, ты вообще о чем? C# и Java используется для таких же целей, как и PHP, но в них ООП нужно, а в PHP ненужно, где логика?

Неактивен

#15 24-10-11 22:27:33

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Babusha пишет:

зачем нужны типажи, ведь нельзя вон тот твой код запихнуть в интерфейсы и так же их наследовать?

В типажах сразу же есть и реализация, в отличие от интерфейсов.

Babusha пишет:

Если честно, я вообще против множественного наследования

Разработчики php тоже. smile

Неактивен

#16 24-10-11 22:28:04

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Кстати, да, Дестер, а как поведет себя PHP, если попытаться решить проблемы https://www.javaportal.ru/java/articles/mnj.html путем использования типажей?

Добавлено спустя 01 мин 01 с:

Дестер пишет:

В типажах сразу же есть и реализация, в отличие от интерфейсов.

А зачем это нужно и почему это так критично, что для этого придумали целое языковое средство?

Неактивен

#17 24-10-11 22:37:34

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Babusha, это не критично, это просто немного упростит жизнь. Например, есть у нас система управления сайтами, в которой имеется поддержка модулей. Разработчик CMS предоставляет сторонним программистам класс "Модуль" и набор разнообразных типажей для использования каких-либо функций этой CMS. Для того, чтобы сделать свой модуль, нужно будет отнаследоваться от класса "Модуль" и подключить какие-нибудь типажи.

Вариант "класс + некоторые типажи" экономичнее, чем просто класс, напичканный всем, чем можно.

Неактивен

#18 24-10-11 22:38:41

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Дестер пишет:

Вариант "класс + некоторые типажи" экономичнее, чем просто класс, напичканный всем, чем можно.

Но для этого есть интерфейсы, зачем тогда типажи?

Неактивен

#19 24-10-11 22:43:06

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Babusha пишет:

Но для этого есть интерфейсы, зачем тогда типажи?

В php каждый класс должен иметь свою самостоятельную реализацию интерфейса. Иными словами, задача по реализации интерфейса возлагается на программиста. А в нашем случае получится, что интерфейс уже реализован производителем.

Неактивен

#20 24-10-11 22:55:19

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354
Windows 7Safari 534.12

Re: В php 5.4 появились типажи

Дестер пишет:

. А в нашем случае получится, что интерфейс уже реализован производителем.

Да-да))) Это-то меня и настораживает))))

Ибо "реализован производителем" - звучит, конечно, гордо. Но обычно все в пхп происходит так, "реализован производителем", значит: Вася Пупкин - забацал, а Сережа Васькин - подхватил, сделал свой типаж, закрыл пару функций, одну перегрузил, сверху Гала Сережина дописала свой класс и вставила туда типаж, а ты получил этот чудо код и смотришь на:

$jopa->GhrLoad_render_SaveJaba();       //Пунктуация автора сохранена... 


И дальше, чтобы понять, что точно происходит, ты лезешь в класс Галки, понимаешь, что это типаж, лезешь в класс Васи, понимаешь, что он нихуя не так работает, лезешь в переделки Сережи...

Т.е. тебе приходится читать весь ёбаный код, чтобы начать с ним работать. Это самый большой бич и жопа ПХП.
За что я его и не люблю...

Добавлено спустя 02 мин 22 с:
Т.е. реально Extension methods выглядят намного достойнее в данном случае.


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Неактивен

#21 24-10-11 22:58:52

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

В общем, я считаю, разработчики PHP реализовали множественное наследование "не как все", можно через интерфейсы, можно через типажи, если учесть, глупость типажей (вот почему бы если так хотелось реализовать множественное наследование, не сделать через классы, а сделали через типажи, ведь получилось одно и тоже), реально же, получилось вот так, к примеру, класс Forum состоит из типажей User, Post, Thread, в Си++ сделали бы класс Forum наследует от класса User, Post, Thread и в результате, получилось бы абсолютно тоже самое, логика у разработчиков PHP как у кактуса, точнее -- ее вообще нету, если учесть факт проблем множественного наследования и факт кривой реализации в PHP, выражаю общественное мнение большинства - не нужно.

Добавлено спустя 01 мин 38 с:

Tiphon пишет:

Т.е. тебе приходится читать весь ёбаный код, чтобы начать с ним работать. Это самый большой бич и жопа ПХП.
За что я его и не люблю...

Вэлком ту множественное наследование.

Редактировался Babusha (24-10-11 23:06:21)

Неактивен

#22 24-10-11 23:11:07

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Babusha пишет:

глупость типажей (вот почему бы если так хотелось реализовать множественное наследование, не сделать через классы, а сделали через типажи, ведь получилось одно и тоже)

Babusha, а зачем же в Ruby сделали примеси?

Добавлено спустя 01 мин 31 с:

Tiphon пишет:

Т.е. тебе приходится читать весь ёбаный код, чтобы начать с ним работать.

Зависит от кода. Точнее, от степени укуренности индуса, код которого разбираешь.
Просто выбирай правильных индусов.

Неактивен

#23 24-10-11 23:21:36

Babusha
Нехристь
Зарегистрирован: 12-03-10
Сообщений: 2,160
Windows 7Chrome 14.0.835.202

Re: В php 5.4 появились типажи

Дестер пишет:

Babusha, а зачем же в Ruby сделали примеси?

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

Дестер пишет:

Зависит от кода. Точнее, от степени укуренности индуса, код которого разбираешь.
Просто выбирай правильных индусов.

Ну ты же сам понимаешь, сравнить культуру написания кода идеальных рубистов или индусов-похапешников приходишь к результату, что в php нельзя давать писать потенциально write-only код, потому-что они только такой писать и будут.

Добавлено спустя 10 мин 58 с:
В общем, подведу итоги:
1. Типажи это реализация множественного наследования, которая подхватывает все его минусы.
2. Вместо типажей лучше использовать интерфейсы.
3. Множественное наследование лучше вообще не использовать, даже через интерфейсы, лучше писать код и продумывать структуру приложения так, чтобы не было надобности использовать множественное наследование.
4. Типажи это potential "write-only", Тифон наглядно привел пример.

Редактировался Babusha (24-10-11 23:25:54)

Неактивен

Kwork.ru - услуги фрилансеров от 500 руб.
Мой VPS с 2016 года !
✅ Виртуальные от 300 ₽/месяц, RAM 1-10GB, DISK 20-360 GB;
✅ Выделенные от 3000 ₽/месяц. RAM 4-64GB, DISK до 4TB;
✅ Intel Xeon, SSD, XEN, iLO/KVM, Windows/Linux, Администрирование;
✅ Бесплатно Full Backup и Anti-DDoS.





Подвал форума

Под управлением FluxBB
Модифицировал Visman

Яндекс.Метрика