Du læser nu et gammelt blogindlæg. Der er ikke læst korrektur på dette, og der er muligvis kommet ny information frem siden. Blogindlægget vil blive kigget igennem snarest.
Ved udvikling af større og mere komplekse applikationer, giver det mening at benytte et framework som Symfony2. Dette skyldes at Symfony2 i høj grad understøtter udvikling af applikationer, der anvender MVC (Model-View-Controller), som er et effektivt mønster, der anvendes til opdeling af de vigtigste lag i en softwareapplikation. Ved anvendelse af frameworket, får man adgang til en masse komponenter med funktionalitet, der hver for sig er “færdiglavet”, med det ment at man sparer utroligt meget tid ved at anvende kode som allerede er skrevet og gennemtestet. Funktionalitet, som tager lang tid at kode og teste fra bunden, men som altså kan anvendes direkte ved at benytte sig af Symfony2’s omfattende softwarebibliotek.
Hvordan Symfony2 gavner forretningen
Der er mange fordele ved Symfony2, som medvirker til at øge produktiviteten i en forretning, nogle af de mest fremtrædende er at:
- Udviklingsprocessen effektiviseres mange gange rent tidsmæssigt. Dette medvirker til at der kan produceres mere, på mindre tid.
- Udvikling af webapplikationer gøres sjovere, da brugen af det omfattende framework gør det muligt at fokusere på de mere spændende udfordringer ved et projekt. Dette tilhjælper den enkelte udviklers investering og engagement i opgaven.
- Den fejlrate der altid forekommer når der udvikles reduceres – netop fordi at frameworket giver adgang til kode, der allerede er skrevet og gennemtestet, så man ved udvikling ikke skal opfinde den dybe tallerken hver eneste gang.
Nogle ulemper man skal være opmærksom på:
- Læringskurven er stejlere end ved mange andre alternativer, derfor tager det længere tid før en udvikler arbejder optimalt med dette framework.
- Det tager længere tid at sætte op og konfigurere.
Hvordan Symfony2 gavner udvikleren
Tekniske fordele ved at anvende Symfony2 kan beskrives som:
- Fornuftige defaults/konventioner, som er nemme at tilpasse.
- Anvender gode patterns fra Ruby on rails, Java, etc.
- Har indtil videre vist sig meget performancedygtigt.
- Produktiv anvendelse af objektorienteret programmering, namespaces, interfaces, annotations, etc.
- Effektiv patch fielding grundet et meget “Git-centrisk” workflow.
- Kode er modulær, test-venligt og virker som forventet.
Der er naturligvis også udviklingsmæssige ulemper ved Symfony2:
- Mangelfuld dokumentation (det som eksisterer er dog velskrevet).
- Besværligt at arbejde med mailing lists.
- Anvendelse af logging er ikke optimalt.
- Ingen OAuth 2.0.
Er du udvikler og gerne vil se en demonstration af hvordan Symfony2 kan reducere din arbejdsbyrde? Følg med her for et step-by-step kodeeksempel på hvordan man sparer tid med Symfony2: http://symfony.com/doc/current/book/from_flat_php_to_symfony2.html
Et framework med fokus på genanvendelighed
Symfony2 understøtter en høj grad af genanvendelighed ved videreudvikling af webapplikationer. Ved softwareudvikling er der en generel faldgrube som hedder, at software kan være svær at videreudvikle på. Dette kan ske når det oprindelige udviklerteam skrev koden, uden at have fokus på transparens og genanvendelighed. Når andre udviklere så i fremtiden skal tilføje eller ændre på funktionalitet til applikationen, kan det tage lang tid at sætte sig ind i koden og forstå den – og dette sker langt hyppigere end man skulle tro!
Med Symfony2 undgås denne faldgrube i en langt højere grad, da frameworket er med til at standardisere det færdige produkt, således at det kun er meget specifik funktionalitet (og slamkode generelt) der kræver ekstra tidsforbrug for at videreudvikle på software.
Skal dit næste projekt udvikles i PHP? Få os til at lave det – vi bruger Symfony2.
Vil du vide mere?
Historien bag Symfony2:
http://techcrunch.com/2013/12/18/sensiolabs-raises-6-9-million-to-implement-its-php-framework-symfony-everywhere/
Se dette interview for at høre om Symfony2 fra Fabien Potencier, som er hovedarkitekten bag SensioLabs, der har udviklet Symfony frameworket: