LINUX.ORG.RU

Symfony 5.0

 , , , ,


2

2

Сегодня на конференции SymfonyCon в Амстердаме был представлен пятый релиз свободного php-фреймворка Symfony, использующего модель MVC. В списке использующих Symfony проектов есть достаточно много популярных веб-приложений, таких как Drupal (CMS), Joomla (CMS), Facebook (SDK), Google API (SDK), phpBB, phpMyAdmin и другие. Среди 269 нововведений можно выделить 2 новых компонента:

  • String — компонент для объект ориентированной работы со строками с абстракцией данных #33553
  • Notifier — компонент для отправки уведомлений по различным каналам (email, SMS, ...) #33687

>>> Подробности

★★★★★

Проверено: a1batross ()
Последнее исправление: cetjs2 (всего исправлений: 11)
Ответ на: комментарий от no-such-file

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

dimuska139 ★★
()
Последнее исправление: dimuska139 (всего исправлений: 1)
Ответ на: комментарий от alexmaru

На самом деле, решение переписать конструктор дочернего класса, является признаком плохой композиции. И тут DI не при чем. Но PHPшники, об этом не думают как правило. «Если в классе композиции происходит «пересмотр» зависимостей - композиция ошибочна» © С Макконнелл (главу не помню).

Это же и объясняет почему в контроллере многие описывают все экшны, вместо того что бы выделять под каждый экшн отдельный класс. И тот факт что в эти самые экшны в параметры магическим образом прилетают зависимости (понятно что сервис провайдер все делает) об этом никто не парится.

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

ilinsky ★★★★★
()
Последнее исправление: ilinsky (всего исправлений: 6)
Ответ на: комментарий от ilinsky

Тестировать такие контроллеры так же не представляется возможным. Вернее тестировать то можно, но тогда тесты превращаются в огромные портянки, что само по себе является признаком говнокода. Тесты должны быть простыми и легко читаемыми. Посмотрел тест - понял что делает класс\метод.

ilinsky ★★★★★
()

String — компонент для объект ориентированной работы со строками с абстракцией данных

2019 год.

cr0
()
Последнее исправление: cr0 (всего исправлений: 1)

чем крут symphony? какие крупные коммерческие проекты на нем реализованы?

например есть bitrix, bitrix24 - который продают за 100-1000к рублей

anonymous
()

а какова примерная средняя стоимость проектов на symphony например интернет магазин и сроки реализации?

anonymous
()
Ответ на: комментарий от anonymous

чем крут symphony? […] например есть bitrix, bitrix24

Вы слово «битрикс», видать, впервые слышите. Посмотрите их конференции за последние лет 5 и поймёте, что существует ровно две причины, по которым они сами ещё не выкинули свой «фреймворк» и не переписали весь функционал на Симфони (или чём-то подобном):

  • попытка сохранить хоть какую-то совместимость (в том числе не переобучать битрикс-программистов и не ломать работающие сайты обновлениями),
  • нежелание тратить деньги на переписывание рабочего кода (да и фиг перепишешь 500МБ пхп-кода за разумное время).

То есть просто легаси.

Лет пять (или восемь) назад они начали рефакторить ядро, но быстро поняли, что проще написать заново. В результате в новых версиях битрикс часть системы реализована по-старому, а часть - на базе нового ядра (D7). Плюс оба ядра предоставляют один и тот же функционал, просто в разном стиле, и битрикс вынуждены поддерживать синхронизированными оба ядра, так что если что-то делается АПИ, предоставляемым старым ядром, то эффект такой же, как если бы это было сделано через АПИ нового ядра.

Так что можете считать, что Симфони крут тем, что если бы битрикс начинался сегодня (или пару лет назад), то был бы сделан на базе него.

anonymous
()
Ответ на: комментарий от no-such-file

Ты очень глупый раз не видишь разницу между auto-wiring и хардкода(!) который работает через singleton

santarinto
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.