Tuesday, September 07, 2010

PHP апликациски рамки, за и против

Кога, пред повеќе години, донесовме одлука сита наши апликации да бидат базирани на web технологија, потрошив скоро два месеци пробувајќи ги тогаш постоечките PHP апликациски рамки.
Ниедна не ме задоволи. Не затоа што -- сами по себе -- беа лошо направени или со малку можности, туку поради две причини:

- Прво и најважно, заклучивме дека иднината не е во PHP како систем за сѐ - front и back-end. Употребата на JavaScript (или DHTML) штотуку „полетуваше“. Ние се фокусиравме на тоа. JS за интерфејсот, а PHP како „тенок“ back-end, само за бизнис логика, базично „подигање“ на апликациите, некои други поситни потреби и -- толку.
Било каков framework само би ни пречел и ограничувал.


- Второ, колку и да е добра, секоја рамка е истовремено и ограничувачка. Кога ќе ја надминете фазата на фасцинација со тро-линиски CRUD „апликации“ кои не можат да послужат за ништо сериозно, сфаќате дека мора да се прилагодите на една шема која потоа ќе ве следи, практично, цел живот.
Менување на рамки за различни апликации, или, не дај боже, субсистеми во една поголема апликација не само што е big no-no, туку и практично неможно.
Исто така, ако сакате да ја проширите програмерската екипа, ретко ќе се случи да најдете некој искусен кој веднаш ќе влета во работите. Добро, тоа ќе се случи и со вашата home-made рамка, но сепак ќе биде полесно, особено ако тој/таа претходно работеле на некоја друга.

„Домашната“ рамка која ја употребуваме е прилично „лабава“, дозволува замена на модули, клучни функции и конфигурации без да правите „5-кратен бајпас на отворено срце“ врз својата апликација.

Но, еден disclaimer за крај: зборувам за (не)употреба на рамки во случаи на поголеми и потешки апликации со повеќе модули, кои постојано се надградуваат и дополнуваат, во тек на повеќе години, и се „чепкаат“ од повеќе програмерски тимови или програмери.
Ако си правите нешто поедноставно, без големи и долгорочни планови, тогаш апликациските рамки само ќе ви помогнат.

5 comments:

  1. Не би се сложил со Вас Г-дине Ванчо. PHP e навистина "зрел" програмски јазик кој навистина нема презентациски адути но сепак може да понуди одлични "работни рамки" кои самите по себе се неверојатен концепт. Тука http://list.mk/lista-na-najdobrite-php-frameworks/ можете да видите една одлична споредба на најпопуларните "работни рамки" за PHP. Моите фаворити се Zend и Kohana.

    ReplyDelete
  2. Да, знам дека PHP е зрел и способен (со сите свои маани, но тоа е друга тема).
    Впрочем, секојдневно го употребуваме во нашите апликации.

    Но, сепак, рамките -- во нашиот случај -- не ни помогнаа, како што опишав во мојот пост.

    ReplyDelete
  3. И јас би се сложил со Горан. PHP моментално има огромен избор на "работни рамки" и од лично искуство сметам дека вреди да се инвестира во изучување на некој од нив. Јас лично поради типот на проектите кои ги работам(middle-range) преферирам Codeigniter, а сум работел и во Symfony. Првиот го преферирам поради слободата која што ја нуди(од друга страна и можноста за лош код), додека пак за посериозни системи дефинитивно би користел Symfony. Секако, се зависи од типот на проектите кои ги работите но генерално сметам дека со Codeigniter можете да постигнете подобри резултати отколку со користење на "flat PHP" или некоја сопствена "работна рамка".

    ReplyDelete
  4. Исто така, имам неколку забелешки за вашиот пост:

    1. Кога ќе ја надминете фазата на фасцинација со тро-линиски CRUD „апликации“ кои не можат да послужат за ништо сериозно

    Апсолутно не се сложувам дека не можат да послужат за ништо сериозно. Најобичен ORM кој што го имаат посериозните PHP "работни рамки"(секако, има и некои кои се самостојни и не се врзани со ниедна "работна рамка") може значително да ја олесни работата и брзината на програмирањето.

    2. Исто така, ако сакате да ја проширите програмерската екипа, ретко ќе се случи да најдете некој искусен кој веднаш ќе влета во работите. Добро, тоа ќе се случи и со вашата home-made рамка, но сепак ќе биде полесно, особено ако тој/таа претходно работеле на некоја друга.

    Скоро сите рамки имаат документација и заедница, каде што може да се прочита и научи за рамката, а и да се постават прашања и споделат мислења со останатите корисници на рамката. Корисниците на дадена рамка се бројат во илјадници, што верувам дека е многу повеќе од вработените во вашата фирма кои работат PHP.

    3. Но, еден disclaimer за крај: зборувам за (не)употреба на рамки во случаи на поголеми и потешки апликации со повеќе модули, кои постојано се надградуваат и дополнуваат, во тек на повеќе години, и се „чепкаат“ од повеќе програмерски тимови или програмери.
    Ако си правите нешто поедноставно, без големи и долгорочни планови, тогаш апликациските рамки само ќе ви помогнат.


    Од моето досегашно искуство сигурен сум дека она што на крај сте го добиле како "домашна рамка" е Codeigniter wannabe со доста нелогичности и лоша архитектура на која секако дека не сте се навраќале да ја поправите во интерес на времето :). Доколку не сум во право, исправете ме, баш ќе ми е драго да најдам фирма во Македонија која не работи со deadline-и "за вчера" и која развива сопствен framework поради недостатоците/ограничувањата на другите open-source framework-ци.

    ReplyDelete
  5. Исто така, имам неколку забелешки за вашиот пост:

    1. Кога ќе ја надминете фазата на фасцинација со тро-линиски CRUD „апликации“ кои не можат да послужат за ништо сериозно

    Апсолутно не се сложувам дека не можат да послужат за ништо сериозно. Најобичен ORM кој што го имаат посериозните PHP "работни рамки"(секако, има и некои кои се самостојни и не се врзани со ниедна "работна рамка") може значително да ја олесни работата и брзината на програмирањето.

    2. Исто така, ако сакате да ја проширите програмерската екипа, ретко ќе се случи да најдете некој искусен кој веднаш ќе влета во работите. Добро, тоа ќе се случи и со вашата home-made рамка, но сепак ќе биде полесно, особено ако тој/таа претходно работеле на некоја друга.

    Скоро сите рамки имаат документација и заедница, каде што може да се прочита и научи за рамката, а и да се постават прашања и споделат мислења со останатите корисници на рамката. Корисниците на дадена рамка се бројат во илјадници, што верувам дека е многу повеќе од вработените во вашата фирма кои работат PHP.

    3. Но, еден disclaimer за крај: зборувам за (не)употреба на рамки во случаи на поголеми и потешки апликации со повеќе модули, кои постојано се надградуваат и дополнуваат, во тек на повеќе години, и се „чепкаат“ од повеќе програмерски тимови или програмери.
    Ако си правите нешто поедноставно, без големи и долгорочни планови, тогаш апликациските рамки само ќе ви помогнат.


    Од моето досегашно искуство сигурен сум дека она што на крај сте го добиле како "домашна рамка" е Codeigniter wannabe со доста нелогичности и лоша архитектура на која секако дека не сте се навраќале да ја поправите во интерес на времето :). Доколку не сум во право, исправете ме, баш ќе ми е драго да најдам фирма во Македонија која не работи со deadline-и "за вчера" и која развива сопствен framework поради недостатоците/ограничувањата на другите open-source framework-ци.

    ReplyDelete