Symfony Как заставить себя использовать Symfony2?

Koc

Новичок
Сабж. Я наверно слишком привередлив.

Термины, сокращения:
фв - framework
сф2 - Symfony2
зф, зф2 - Zend Framework, Zend Framework 2


С первого дня весны я перехожу на другую работу, где мне нужно будет переписать один проектец. Проектец не то, что бы слишком крупный, но с нуля такого я еще не писал + в последствии на его движок нужно будет перенести еще пару-тройку других сайтов.

Если разрабатываем заново, то логично использовать 5.3 и какой-нить фв. Из фреймворков под 5.3 на сегодняшний момент только сф2 в более-менее вменяемом состоянии. Собственно говоря а что кроме нее? ЗФ2? - доков ваще нету. Литиум? - так он только разрабатывается.


Что меня стремает в сф2 и что не нравится:
1) Request:
1.1) $request->query; $request->post // query, post - паблик свойства. Какого черта это паблик? Я геттер хочу
1.2) то, что сессию можно получить из реквеста. В моем понимании сессия - это самостоятельный компонент, который зависит от реквеста (получение кук или ?SID) и использует респонс (посылка куков).
1.2.1) Вообще сессии в сф2 какие-то слабые. Мне не нужны сессии из зф, но хотя-бы неймспейсы можно было добавить, а?
1.2.2) Ну и я может хочу для сериализации сессий igbinary использовать. А тут нету интерфейса сериалайзера
1.3) Получение base_path, base_url и прочих - это жуть. Код взят из зф, довольно паршиво смотрится. Имхо это можно более красиво переписать

2) Routing: слабо, очень слабо. Он вообще тупо ничего не умеет. Мне нужно что-то наподобие зф-ного.

3) Security: не хватает документации, не могу сообразить как отдельно заюзать.

4) Forms: вроде прикольно, но зависит от Request, что в принципе логично, но мне не подходит

5) Translator как-то не нравится. Что именно не так - сказать затрудняюсь, но иначе я его интерфейс вижу. Взять хотя бы такое дело (plural translation):
Код:
'{0} There is no apples|{1} There is one apple|]1,Inf[ There are {{ count }} apples'
Это что, получается, я должен помнить plural-forms когда пишу код? А если дефолтный язык у нас русский, и тут не 2 формы а 3?

6) Кеширование. Это что еще за бубуйня? То есть делать субзапросы к вебсерверу типа быстрее чем из нормального кеша доставать данные? Вот тему тут у вас нашел по этому поводу http://phpclub.ru/talk/threads/Библиотеку-для-парсинга-ssi.66183/


А в целом конечно очень прикольно. Организация конфигурации, бандлов - яд. Бандл добавляет свои комманды в cli-tasks, профайлеру и логгеру отсылает данные.


Как же мне быть, господа? Что я знаю точно, так это то, что буду использовать Console, DI, EventDispatcher и Доктрину2. Хотя в последней мне не хватает Named Scopes. Ну и роутинг скорее всего свой перепишу, собственно говоря он тут уже проскакивал в теме о вакансии на TDD. А с остальным как быть? Реквест хочу свой. А если свой - то формы уйдут.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
выражаю тебе свое глубокое сочувствие
 

fixxxer

К.О.
Партнер клуба
Если бы это были единственные претензии к Симфони 2, я бы давно ее заюзал вообще не думая :D
 

Koc

Новичок
fixxxer
о, поделись своими недовольствами.

grigori
так а как же поступить?
 

fixxxer

К.О.
Партнер клуба
Общее впечатление - адский оверинжиниринг там, где оно нахрен не надо, и отсутствие гибкости там, где действительно надо. Детально расписывать это надо освежать в памяти =)

А того человека, который им показал, что phpdoc можно парсить через reflection, хочется убить об стену. Нафига тащить из джавы не думая?
 

Koc

Новичок
а какое именно использование аннотаций не нравится? Мне не нравятся задавать правила валидации через них. Но в то же время для описания сущностей в доктрине - нормалек.

Задание роутов в контроллерах через аннотации тоже не нравится.

зы: http://zfconf.org.ua/conf-2010/topics/aop/
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
А того человека, который им показал, что phpdoc можно парсить через reflection, хочется убить об стену. Нафига тащить из джавы не думая?
хехе, об этом только и говорили на последней ZendConf, судя по всему это мода такая теперь у фреймворков
Doctrine2 описания таблиц из phpdoc читает вместо xml :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
grigori
так а как же поступить?
а я-то че? :) я согласен с fixxer - все, что ты написал относительно легко правится, на то он и фреймворк, а не bitrix
я юзаю yii, который есть давно и нормально,
а вместо Symfony я лучше оригинальный Django возьму
 

korchasa

LIMB infected
хехе, об этом только и говорили на последней ZendConf, судя по всему это мода такая теперь у фреймворков
Doctrine2 описания таблиц из phpdoc читает вместо xml :)
Ну и правильно. Ибо:
1. Документация из коробки
2. Читается легче
3. Умеет сворачиваться и не мозолить глаза, если не нужна.
 

fixxxer

К.О.
Партнер клуба
4. Громоздко настолько, что аж пришлось написать генератор entities из yml/xml. :)

Нет, я не против самого такого подхода в контексте ORM (и полностью за него в контексте юнит-тестирования), но в доктрине 2 явный перебор (все, что имеет хоть какие-то небанальные связи, превращается в нечитаемую кашу). Во всех остальных случаях это просто дурная мода какая-то. И потом на это все стопицот уровней кэширования, чтобы взлетело.
 

fixxxer

К.О.
Партнер клуба
а вместо Symfony я лучше оригинальный Django возьму
да я бы не сказал, что вторая симфони джангу хоть сколько-либо напоминает. Там скорее спрингами с хибернейтами запахло.
 

korchasa

LIMB infected
По сабжу:
> 1) Request:
Не нравиться родной, сделай свой и подмени.

>2) Routing: слабо, очень слабо. Он вообще тупо ничего не умеет. Мне нужно что-то наподобие зф-ного.
Возьми из zf, и напиши адаптер

>3) Security: не хватает документации, не могу сообразить как отдельно заюзать.
Не понял о чем это и почему отдельно

>4) Forms: вроде прикольно, но зависит от Request, что в принципе логично, но мне не подходит
Если нормально напишешь свой, то проблемы не будет

>5) Translator как-то не нравится... Это что, получается, я должен помнить plural-forms когда пишу код?
Да, ты должен помнить. Не хочешь помнить - напиши свой, который будет использовать внешний словарь

>6) Кеширование. Это что еще за бубуйня?
Если это не полностраничный кэш, то его можно вставить свой, какой тебе больше нравиться.

Что значит заставить себя использовать? Есть более достойные альтернативы? Используй. Нет альтернатив? Бери что дают, и дорабатывай.
 

fixxxer

К.О.
Партнер клуба
Можешь кинуть пример? По документации, все вроде бы красиво.
Ну, например, при совмещении (1) и (2) мне стало страшно. А всего то m:n хотелось :)

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

Koc

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

Возьми из zf, и напиши адаптер
да есть уже свой, с поддержкой chained-routes (hostname + query uri), даже юнит-тестами покрытый, но пока не пойму как его туда втулить


Не понял о чем это и почему отдельно
это компонент аутентификации и прав доступа


Нет альтернатив?
на сегодняшний день не вижу. Альтернатива - велосипед, и по возможности максимум кода из сф2
 

zerkms

TDD infected
Команда форума
Какие-то вы чересчур привередливые.

Btw, а что буэшного?
 

Koc

Новичок
ничего 5.3шного. Куча статики. Дурацкая структура директорий, перегрузка классов невнятная (могут из одной папки загрузиться а могут из другой, но при этом именно имя класса будет такое же).

Я кстати всегда думал, что статика - это не TDD'шно.


Мне очень нравится симфонийский конфиг, особенно теги https://github.com/symfony/symfony-docs/blob/master/guides/dependency_injection/index.rst
 

Koc

Новичок
PHP:
<?php defined('SYSPATH') or die('No direct script access.');
от одного этого уже воротит. Я помню в Slaed'е так было
 
Сверху