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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Мнения
EuGen Администратор
Отправлено: 23 Сентября, 2013 - 13:18:39
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Приветствую,

Хочу поделиться с сообществом некоторыми мыслями в плане развития языка PHP в целом. В дальнейшем подобные обсуждения, возможно, я буду поднимать снова, если данное покажет состоятельность и смысл их проведения.

Так случилось, что некоторое время я общаюсь с разработчиками PHP напрямую, что даёт мне возможность узнать некоторые новые вещи - и возможность их обсудить. Иногда мы делимся мнениями о том, какой вектор развития следует придать языку - какие новые возможности стоит вводить и т.п.

В настоящий момент замечательный разработчик Joe Watkins (автор небезызвестного APC для PHP) предложил ввести анонимные классы. Они подобны существующим анонимным функциям, но более функциональны и гибки. Детали можно посмотреть здесь.

Собственно, я хочу услышать мнения - стоит ли это разработки? Нужна ли такая функциональность? Если да, то, возможно, несколько в другом виде? Буду благодарен за конструктивные мнения и советы, обещаю наиболее интересные из них донести до разработчиков.

Просьба заранее - не писать только "Да/Нет/Всё равно" - так как такие ответы могли бы быть получены и без специального обсуждения, это - не "сбор подписей", но получение идей для развития, и, значит, предполагается конструктивизм. Надеюсь на понимание.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
esterio
Отправлено: 23 Сентября, 2013 - 13:24:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




синтаксис похож на JS, тоесть обьявления класса и вызов конструктора с параметром $controller. Меня больше волнует то, что будет еще более магии в коде и поиск связей будет еще менее прозрачним нежели сейчас. Ну и конешно PHPDoc не будет видавать подсказок сначала. Ну и описание целого анонимного класса не будет отличаться от описания обычного. Я думаю оно хорошо как новая возможность и фича, но не более. Будет что-то вроде трейтов - как бы существует, но не особо нужна ИМХО
 
 Top
EuGen Администратор
Отправлено: 23 Сентября, 2013 - 13:48:09
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ещё более хотелось бы услышать - почему стоит/не стоит их делать? То есть причина "почему бы и нет, такое в Java есть уже давно" или "не очень понятно в javascript, не стоит и здесь" - не совсем то, что хотелось бы видеть. Каковы плюсы/минусы использования? Какие возможности можно было бы охватить этим функционалом? и т.п.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
esterio
Отправлено: 23 Сентября, 2013 - 14:18:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Ну например помниться мнин-фреймворк silex
Там бы ето пригодилось вместо
Спойлер (Отобразить)


Можно описать так
PHP:
скопировать код в буфер обмена
  1. $app->get('/hello/awesome/pink', new class extends BaseController {
  2.    public function actionIndex() { /*...*/ }
  3.    public function actionCreate() { /*...*/ }
  4.    public function actionUpdate() { /*...*/ }
  5.    public function actionDelete() { /*...*/ }
  6. });


Пока что придумал только такой функционал.


Отредактировано администратором: EuGen, 23 Сентября, 2013 - 14:29:11
 
 Top
EuGen Администратор
Отправлено: 23 Сентября, 2013 - 14:26:30
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Пример любопытный. Возможно, от него можно в качестве производных получить и другие случаи, когда такое использование обосновано и ведёт к упрощению кода. Имею ввиду формализацию всех подобных случаев и выделение основы, когда применение анонимных классов решает задачу более гибким и простым способом.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
caballero
Отправлено: 23 Сентября, 2013 - 15:10:38
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




анонимные классы есть в яве (как и inner классы). Вещь полезная если с умом использовать. Во всяком случает полезнее трейтов и елдов которые так и непонятно для чего. Я имею ввиду непонятно практическое примерение.

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

Но любое такое изменение усложняет компилятор со всеми вытекающими последствиями.

А еще было бы неплохо заполучить в PHP нормальные аннотации. Пусть без имплементации как в яве но хотя бы чтобы не использовать интроспекцию и не боятся что какой нибудь опкодекешер их порежет вместе с коментариями.

как говорят в Одессе - мое ИМХО.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
EuGen Администратор
Отправлено: 23 Сентября, 2013 - 16:23:04
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




caballero пишет:
Я имею ввиду непонятно практическое примерение.

И какое применение этим классам в PHP Вы видите? Можете привести некоторые примеры? (как esterio сообщением выше)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
caballero
Отправлено: 23 Сентября, 2013 - 18:06:13
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




особо широкого не вижу. Без них вполне можно обойтись.

В основном наверно всякие собитийно-ориетированные решения. Приблизительно как замыкания но с тем преимуществом что это все таки класс а не отдельная функция.
то есть анонимный клас наследует существенный функционал.

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

(Отредактировано автором: 23 Сентября, 2013 - 18:14:45)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
EuGen Администратор
Отправлено: 24 Сентября, 2013 - 13:59:18
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




caballero
Пример хороший, мне нравится (в основном, тем - что описывает целый класс для случаев, когда применимость оправдана). Хотелось бы увидеть ещё мнения.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
EuGen Администратор
Отправлено: 15 Октября, 2013 - 11:59:11
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




По результатам голосования данный функционал был отклонён [9/23].


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 01 Апреля, 2015 - 17:12:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




И, полтора года спустя они же: https://wiki.php.net/rfc/anonymous_classes
Приняты голосованием 50 за к 2 против.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Прочее »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB