Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Анонимные классы в PHP
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Приветствую,
Хочу поделиться с сообществом некоторыми мыслями в плане развития языка PHP в целом. В дальнейшем подобные обсуждения, возможно, я буду поднимать снова, если данное покажет состоятельность и смысл их проведения.
Так случилось, что некоторое время я общаюсь с разработчиками PHP напрямую, что даёт мне возможность узнать некоторые новые вещи - и возможность их обсудить. Иногда мы делимся мнениями о том, какой вектор развития следует придать языку - какие новые возможности стоит вводить и т.п.
В настоящий момент замечательный разработчик Joe Watkins (автор небезызвестного APC для PHP) предложил ввести анонимные классы. Они подобны существующим анонимным функциям, но более функциональны и гибки. Детали можно посмотреть здесь.
Собственно, я хочу услышать мнения - стоит ли это разработки? Нужна ли такая функциональность? Если да, то, возможно, несколько в другом виде? Буду благодарен за конструктивные мнения и советы, обещаю наиболее интересные из них донести до разработчиков.
Просьба заранее - не писать только "Да/Нет/Всё равно" - так как такие ответы могли бы быть получены и без специального обсуждения, это - не "сбор подписей", но получение идей для развития, и, значит, предполагается конструктивизм. Надеюсь на понимание.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
esterio
Отправлено: 23 Сентября, 2013 - 13:24:48
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
синтаксис похож на JS, тоесть обьявления класса и вызов конструктора с параметром $controller. Меня больше волнует то, что будет еще более магии в коде и поиск связей будет еще менее прозрачним нежели сейчас. Ну и конешно PHPDoc не будет видавать подсказок сначала. Ну и описание целого анонимного класса не будет отличаться от описания обычного. Я думаю оно хорошо как новая возможность и фича, но не более. Будет что-то вроде трейтов - как бы существует, но не особо нужна ИМХО
EuGen
Отправлено: 23 Сентября, 2013 - 13:48:09
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Ещё более хотелось бы услышать - почему стоит/не стоит их делать? То есть причина "почему бы и нет, такое в Java есть уже давно" или "не очень понятно в javascript, не стоит и здесь" - не совсем то, что хотелось бы видеть. Каковы плюсы/минусы использования? Какие возможности можно было бы охватить этим функционалом? и т.п.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
esterio
Отправлено: 23 Сентября, 2013 - 14:18:59
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Ну например помниться мнин-фреймворк silex
Там бы ето пригодилось вместо
Пока что придумал только такой функционал.Отредактировано администратором: EuGen, 23 Сентября, 2013 - 14:29:11
EuGen
Отправлено: 23 Сентября, 2013 - 14:26:30
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Пример любопытный. Возможно, от него можно в качестве производных получить и другие случаи, когда такое использование обосновано и ведёт к упрощению кода. Имею ввиду формализацию всех подобных случаев и выделение основы, когда применение анонимных классов решает задачу более гибким и простым способом.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
caballero
Отправлено: 23 Сентября, 2013 - 15:10:38
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
анонимные классы есть в яве (как и inner классы). Вещь полезная если с умом использовать. Во всяком случает полезнее трейтов и елдов которые так и непонятно для чего. Я имею ввиду непонятно практическое примерение.
Опять же в яве анонимные классы включают в себя контекст класов в которых они вызываются (по аналогии с лямбда функциями).
если будут сделаны так же криво как замыкания то толку будет немного.
Но любое такое изменение усложняет компилятор со всеми вытекающими последствиями.
А еще было бы неплохо заполучить в PHP нормальные аннотации. Пусть без имплементации как в яве но хотя бы чтобы не использовать интроспекцию и не боятся что какой нибудь опкодекешер их порежет вместе с коментариями.
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
caballero пишет:
Я имею ввиду непонятно практическое примерение.
И какое применение этим классам в PHP Вы видите? Можете привести некоторые примеры? (как esterio сообщением выше)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
caballero
Отправлено: 23 Сентября, 2013 - 18:06:13
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
особо широкого не вижу. Без них вполне можно обойтись.
В основном наверно всякие собитийно-ориетированные решения. Приблизительно как замыкания но с тем преимуществом что это все таки класс а не отдельная функция.
то есть анонимный клас наследует существенный функционал.
к примеру есть некий объект на который нужно повесить обработчик. вместо вешать калбек создается анонимный класс этого компонента а обработчик просто функция которая переопределяет родительский и выполняет необходимые в даном контексте действия
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
caballero
Пример хороший, мне нравится (в основном, тем - что описывает целый класс для случаев, когда применимость оправдана). Хотелось бы увидеть ещё мнения.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
EuGen
Отправлено: 15 Октября, 2013 - 11:59:11
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
По результатам голосования данный функционал был отклонён [9/23].
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Мелкий
Отправлено: 01 Апреля, 2015 - 17:12:41
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.