@Playbot PAC это тот же HMVC только с несколько другой терминологией. Можно норм делать вещи на нем. MVC (если брать обычный, без иерархии и т.д.) будет менее гибок.
Что до "переписать с нуля" - это конечно можно, если проект не сильно большой и можно будет уложиться в месяца 4-6. Но если проект уже крутится в продакшене или должен быть там скоро - лучше рефакторить этот.
У меня как-то был опыт рефакторинга проекта с применением Symfony/HttpKernel + stack php + silex (можно заменить любым фреймворком имплементящим HttpKernelInterface). В этом случае все новые штуки можно писать уже на норм фреймворке, а старые потихоньку по мере продвижения в код рефакторить. Систему авторизации можно сразу запихнуть в мидлвар как надстройка над приложением. Можно взять текущую API который использует старый движек и сделать там биндинг к компонентам фреймворка или вашим нормальным... Вариантов на самом деле масса.
Чисто теоритически при таком подходе риски будут ниже чем при "написать с нуля". так как у вас код стабилизируется на месяц два раньше.
Ну и да, без тестов вообще лучше ничего не трогать. Покройте хотя бы behat-тестами, назовите это BDD и в путь. Но лучше нормальными функциональными (если тестов небыло вообще) а потом компоненты которые собираетесь рефакторить - юнит тестами.
@ImmortalCAT а причем тут практик или нет, КАК что-то узнать не особо важно, важно это узнать. Скажем не думаю что вы знаете зачем в c# партиал классы, врят-ли баловались с генераторами... В C++ в универе вас попросят написать какой-нибудь очередь на шаблонах разве что и все. Что-то сложнее - уже в порядке факультатива.
так у вас просто говнокод, причем тут MVC vs PAC? Вам в любом случае нужно закладывать время на рефакторинг, покрывать все тестами, развязывать систему....
@ImmortalCAT вопрос только сколько это займет времени. Скажем переход с Java на c# займет немного больше времени, чем обратный переход. С php на ruby займет больше времени чем с php на python... С c++ на D думаю переход займет примерно столько же времени сколько и при переходе с Java/C#...
Языки программирования - это легко, но нужно знать еще и стандартную библиотеку языка что бы хоть что-то дельное писать.
@ImmortalCAT ну... если вы всю жизнь писали на Java/C# (правда последнее меньше), изучение, например, Haskel или Lisp может вызвать небольшие затруднения в виду совершенно других подходов. Но в целом да. А на вижуал бэйсике не так то и сложно писать.
@dedik я уже давненько не работал с формами, но вроде как трабл в PhoneFormType. Погуглите, это довольно распространенный кейс. Мне кажется что entity туда запихивать не нужно, у вас эта форма уже над вашей моделью должна строиться.
Коллекциям вообще-то без разницы с чем они работают. Это могут быть связанные сущности, просто сферические массивы чего-то в вакууме. Если у вас есть у сущности связь, ссылающаяся на энтити которые вы и хотите редактировать (ArrayCollection), то вы можете добавить поле с типом коллекции и указать прототип для элемента коллекции (тот form type который предназначен для entity). Далее умный symfony forms достанет данные и запихнет их по нужным местам. Если появятся новые элементы в коллекции - создаст их, вам останется только заперсистить их (или выставить каскадный персист в настройках энтити но я бы не рекомендовал этого делать только изза лени).
@iDennis вы преувеличиваете. Вообще я не знаю о более быстрых алгоритмах. Можно взять за основу и ускорить работу этой штуки но не за счет изменений в алгоритмах а за счет микрооптимизаций (я так понимаю у вас огромные объемы текста?)
@AlexGx меня это дико бесило в Yii1. Тоесть как, там полуавтоматическое разруливание таки было, но дико косячно. Надо было иногда делать вручную проверки был ли выставлен алиас... короче кастыльно как-то.
Что до "переписать с нуля" - это конечно можно, если проект не сильно большой и можно будет уложиться в месяца 4-6. Но если проект уже крутится в продакшене или должен быть там скоро - лучше рефакторить этот.
У меня как-то был опыт рефакторинга проекта с применением Symfony/HttpKernel + stack php + silex (можно заменить любым фреймворком имплементящим HttpKernelInterface). В этом случае все новые штуки можно писать уже на норм фреймворке, а старые потихоньку по мере продвижения в код рефакторить. Систему авторизации можно сразу запихнуть в мидлвар как надстройка над приложением. Можно взять текущую API который использует старый движек и сделать там биндинг к компонентам фреймворка или вашим нормальным... Вариантов на самом деле масса.
Чисто теоритически при таком подходе риски будут ниже чем при "написать с нуля". так как у вас код стабилизируется на месяц два раньше.
Ну и да, без тестов вообще лучше ничего не трогать. Покройте хотя бы behat-тестами, назовите это BDD и в путь. Но лучше нормальными функциональными (если тестов небыло вообще) а потом компоненты которые собираетесь рефакторить - юнит тестами.