Каква е разликата между Symfony1 и Symfony2

+8 гласа
90 прегледа
попитан 2016 юни 15 в PHP от Veronika.Georgieva. (1,460 точки)
Реших да започна да работя с framework и се спрях на Symfony, но се чудя между Symfony1 и Symfony2. Каква е разликата между тях?

2 отговори

+3 гласа
отговорени 2016 юни 15 от Nolongerexists2 (1,770 точки)

В Symfony1 твоят проект има едно или повече приложения – едно за frontend и едно за backend и всичко се събира в apps/. App/ съдържа специфична конфигурация на приложението.
В Symfony2 имаш само едно приложение представено през apps/ директорията. За разлика от Symfony1, почти няма PHP код който да се съхранява в app/. Тази директория не е предназначена да разполага с модули и библиотечни файлове. В повечето случаи тъй като в Symfony2 е нужно да направиш само едно приложение, ако направиш второ то ти трябва да направиш нов проект и да споделиш пакетите между тях.

Autoloading при Symfony1 той преминава през целия проект за наличие на PHP класове, събира кеша в голям масив. Този масив издава на Symfony1 точно къде се съдържат класовете в файловете, което означава, че често трябва да се чисти кеша.
При Symfony2 е доста по-универсален, дота по-бърз и е независим от кеша, тоест той не се събира в такива големи количества и няма да е нуждо да се чисти.

src/ - при Symfony2 целия код на програмата се събира в пакети, а всеки пакет се съхранява в src. Тази директория прилича на plugins при symfony1, но с доста по-разтегателни функции.

Symfony2 – Работата му е доста по-лесна и по-бърза защото целия код се събира в пакетите, докато при Symfony1 целият код се събира в приложението.

коментиран 2016 юни 16 от Veronika.Georgieva. (1,460 точки)
Благодаря за обеснението :)
+1 глас
отговорени 2016 юни 16 от Deyan Delev (1,830 точки)

Здравей,

Поздравления за избора ти на framework – Symfony наистина си заслужава.

Генерално погледнато след като не си работила и на нито една от двете, знанието за разликите по между им няма да има никаква стойност за теб. Все пак нека допълня някои неща:

На първо място Symfony 2 e доста по-еволюирал framework от предшественика си (Symfony)

Най-забележимото нещо, което можем да видим на пръв поглед е логото:

Структурата на директориите – промените по тях не са особено значителни, променени са дребни детайли по папките app/, scr/ и web/.

Autoloading – значително подобрен в Symfony 2, по-бързи и с по-универсално приложение, премахната е нуждата от изчистването на кеша. Грижата за всичко това е поставена на класа UniversalClassLoader. Идеята на Autoloader-а е името на класа и namespace в него да съответстват на пътя към този клас. С други думи ако създадем клас в папка Scr/AppBundle/Controller/, то той трябва е да е кореспондиращ namespace, в случая това ще е „AppBundle/Controller”.

Конзолата – в главната директория на Symfony се намира конзолата, която там е именувана „symphony”. В Symfony 2 нещата си идват на мястото: конзолата е именувана „console” и е поставена в поддиректорията app/. А в Symfony 3, конзолата отново е със същото име, но вече се намира в поддиректория bin/.

Приложенията – в Symfony 1 e нормално в един проект да има няколко приложения. В Symfony 2 e достатъчно само едно приложение за да имаме завършен продукт. За да създадем второ приложение, ще трябва да създадем друг проект, удобството тук е, че можем да споделим неговите bundles с първият ни проект.

Plugins & Bundles – в Symfony се използват плъгини, във Symfony 2 те са заменени с bundles, който в сравнение с плъгините са доста по гъвкави и мощни. Във Symfony 2 всичко се състои от bundles, дори самият framework по себе си е набор от bundles. Приложението, което ще създаваме там е също bundle, или набор от bundles.

Както казах и по-горе, мисля си, че така поднесена информацията няма да има голяма стойност за теб. Моят съвет е да започнеш да четеш документацията за Symfony. Все пак този framework се слави с една от най-добрите документации, и най-важното: написано е на що-годе разбираем език.

Коя версия все пак да избереш?

Към настоящият момент Symfony се предлага в 3 версии, като главният анонс е върху 2 и 3 (което елегантно намеква, че вече няма смисъл от Symfony 1):

За Symfony 2 последната версия е 2.8.7, която е LTS, което ще рече, че ще има поддръжка още дълго време.

За Symfony 3 това е версия 3.1.1, която самите разработчици препоръчват ако започваме нов проект: „recommended to create new Symfony projects”. Dev версията им е 3.2.0-DEV и т.н.

Ако можем да обобщим в едно изречение: 

"Symfony 2 по-бърза от Symfony, и с по-малко бъгове от Symfony 3" 

Така, че на базата на това твърдение, може спокойно да се спреш на Symfony 2.

коментиран 2016 юни 16 от Veronika.Georgieva. (1,460 точки)
Благодаря за отговора
...