август 15

CodeIgniter vs Zend Framework

Ето нещо интересно за всички „отворени програмисти“, занимаващи се с уеб. Това е едно детайлно сравнение между две от най-популярните платформи (аджеба как е фреймуърк на български) – CodeIgniter и Zend Framework. Като цяло споделям впечетленията на автора, и донякъде изводите. Аз също смятам, че съм пристрастен, но пък това не пречи да съм критичен ;) Това, че старта с CodeIgniter е по-лесен буди леко съмнение в мен, след като автора признава че му е фен и го използва активно – преценката му за това дали е лесно да се работи с тази платформа може би е изкривен. Както и да е – прочетете материала:

Много ми хареса коментара на Уил Синклер, който е текущия ръководител на Zend Framework проекта. Супер е да видиш някой да отделя толкова детайлно внимание на информацията, която се публикува за работата им. Въпреки че имам лоши впечетления за последните няколко „етапа“ от развитието на проекта (за което ще пиша друг път), статията като цяло много добре улавя силните страни на Zend Framework. С CodeIgniter просто нямам достатъчно опит.

23 коментара

  1. Наистина интересно, до голяма степен съм съгласен със статията. За мен Zend Framework и CodeIgniter са най-добрите PHP framework-ци.

    Comment by Radoslav Stankov — август 15 @ 17:06

  2. Oi, a CakePHP 2.0 ? koito e sazden po podobie na RoR (daaa daa), super lesen za rabota, otlichen code cavarege na test casovete.
    Ne sum polzval Ci no moje bi niakoi moje da spodeli ako e rabotil I s dvete

    Comment by Flxr — август 15 @ 17:17

  3. Zend Framework се отклоняват в едни посоки, които лично на мен не ми харесват. Не ми харесва, че единственото приложение (което аз съм разгледал) на ZF е Magento-то, остави че са конкуренция, ама Varien са яко обвързани със Zend и въпреки всичко кода на Magento ми е яко мазан. За първата си година съществуване има супер малко „възприемане“. И наистина става тежко, дебело прасе ;)

    Comment by Kaloyan — август 15 @ 20:38

  4. CakePHP 2.0 не е ли още бета ? Или алфа ;) На този проект според мен най-големия недостатък беше „разкрачването“ върху PHP4 и PHP5. Не съм сигурен, но и лошите бенчмаркове напоследък според мен се дължат на тази му „двойнствена“ природа. Обаче пък CakePHP 2.0 ще е само PHP5, нали ? Така че има какво да се види.

    От къде мога да разгледам какво има в CakePHP 2.0 ? На сайта намерих само 1.1 и 1.2, както и в trunk-a на svn-а:

    https://svn.cakephp.org/repo/trunk/cake/

    Comment by Kaloyan — август 15 @ 20:47

  5. Значи мислиш че CakePhp 2.0 не е добър? И в крайна сметка кое е най-добро да знам къде да се ориентирам.

    Comment by Aggie — август 15 @ 21:49

  6. Първо, не се опитвам да казвам кое е добро и кое не е. Второ, като го видя този CakePhp 2.0, тогава ще говоря. Имам чуството, че се получава някаква разминаване – аз като говоря за CakePhp 2.0, говоря за проект изцяло на PHP5. Поне така бях чел, или май слушал в някой подкаст. От друга страна, на много места виждам че на 1.2 му се вика CakePhp 2, което не е много коректно. Въпросното 1.2, което още не е пуснато като стабилна версия, ами е някакъв рилийз кандидат (RC), и отново е PHP4/PHP5 съвместимо. Както вече писах, аз намирам това за голям недостатък, понеже ограничената ООП функционалност на PHP4 не дава възможност да се ползват всички плюсове на подобренията от PHP5.

    Comment by Kaloyan — август 15 @ 22:06

  7. Иначе, ако наистина търсиш „ориентация“, моят съвет е да пробваш с CodeIgniter. Лесно се учи, също е PHP4/PHP5 съвместим, така че ще можиш да си качваш нещата почти на всеки хостинг, има добра документация, много примери, и голяма „общност“.

    Comment by Kaloyan — август 15 @ 22:26

  8. Благодаря!Ще го пробвам.

    Comment by Aggie — август 16 @ 09:46

  9. Работил съм с ZF, виждал съм код на CodeIgniter. Наистина, CI изглеждаше сравнително лесен, докато ZF за мен е по сериозен фреймуърк. Но от година използвам symfony и ZF не може да му се опре по функционалност, доста време се спестява

    Comment by Manol Trendafilov — август 16 @ 11:49

  10. Хм, Symfony обаче наистина е с по-стръмна „крива на обучението“, нали ? Много повече време и енергия трябвя да се хвърли, за да започнеш работа с нея. От друга страна, ти не си първият, който я хвали, а и това, че Yahoo са я избрали, за да си правят новите сайтове с нея (за сега са май само Yahoo Bookmarks и Delicious) говори много за качествата и.

    Comment by Kaloyan — август 16 @ 14:59

  11. CodeIgniter…това, лично на мен не ми допада.
    Имах практически опит с този фреймуърк, защото преди около година се наложи да се прави един CMS (доста опростен) и да работи на PHP4. Умрях си с CI, а уж поддържаха php4. Като креаен резултат, толкова много код преправих (куп грешки при E_ALL), deadlines дойдоха, отминаха и накрая трябваше да изрева за PHP5 хостинг и чак тогава вече имах възможността да ползвам фреймуърк, като хората.

    Като цяло, може би проблема да е бил основно под PHP4, но лично за мен самата структура, която ползва CI, не ми допада. Може би става за проект с 5 „почти статични“ странички, но това си е нещо, което трябва да се реши според случая/проекта.

    Относно ZF, доста луда работа е там. С удоволствие наблюдавам проекта от както се появи официално бетата. В началото имаха доста неща за дооправяне, малки проблеми като цяло, а начина на contribution-а към проекта е малко кофти и доста бавно стартираха. Впредвид, че са Zend и community-то, което се издигна в началото..бавно си беше. Нищо де, сега гледах са пооправили това-онова.
    Ð’ ZF ми харесва, това че всичко си има място. Класовете, naming conventions..като цяло, по-голямата част от кода е написана по оптимално (от гледна точка перформънс), за разлика от CI. Тук обаче, перформънса има цена (така да се каже), докато в CI, всичко е някак си … „нахвърляно“ и кода им е изключително малко, то е нормално в тази статия да „бъде бърз“. Реално ако се наложи да се ползва при малко по-голямо приложение (сайт), то … нещата определено ще се обърнат и ZF ще е по-добро решение :)

    Както по-рано казах, важен е самият случай/проект, а не чак толкова Framework-a.

    Оф..магенто..подкрепям те относно тази глупост. Не мисля, че е сериозно един еКомърс продукт да изглежда така. Кода на доста места е мазало, структурата на цялото приложение е малко нестандартна. Мисля, че опитът им да изпълнят стандартният бизнес модел при open source, чрез услуги беше добър. Но едва дали бих прибягнал да ползвам Магенто, защото с всеки изминал ден се блъскат редица ненужни функции, а това влияе на перформънс, а пък и секюрити. Както обичат да казват от 37signals, „1 нов фючър = 10 които ще последват“

    Нека се опитам да обобща мнението ми, CI според мен не е сериозен фреймуърк, на които да може да се разчита за големи проекти. ZF, благодарение на структурата си е доста добър избор за големи проекти, поради причината, че кода е лесен за „четене“ (както и трябва), стриктен, структуриран и прочие.
    Лично аз за малък проект бих избрал symfony, а за нещо по-голямо ZF :)

    Comment by Любомир Петров — август 18 @ 09:26

  12. ZF се отклонява от първоначалната си идея. Трябваше да предлага платфолма с лесни решения за най-често срещаните неща, а сега като че ли се опитва да се прави на PEAR, и да пускат все по-екзотични и екзотични класове.

    Структурата на ZF и това, че всичко си има място – мааалко не съм съгласен. Много често се случва да няма единен подход при имената на класовете, и това е нещо, което като чета форума на Nabble, се оказва го виждат и други хора. Ако си разглеждал имплементацията на някои неща, ще видиш, че може би някои са направени излишно сложни. От друга страна, това е сравнително млада платформа, така че може би трябва да мине още малко време докато се изгладят ръбовете. Така или иначе, сега с представянето на namespace-овете проекта ще трябва да се преустрои ;)

    За оптималност в ZF въобще не може да говорим. Не знам какво точно си гледал, но CI е оса, а ZF е прасе. Всички забелязват, че с всяка следващата версия, платформата става все по-бавна и по-тежка, и бях чел, че Уил Синклер специално ще обърне внимание на производителността в някоя от следващите (близки) версии.

    За Магенто – не си ме разбрал, или аз не те разбирам. Вътре карантиите му наистина са някаква джунгла, но е едно от малкото приложения, в които ZF се използва. Един „фреймуърк“ без истинско приложение е умряла работа. Иначе Магентото като продукт е супер. Не знам за какви бизнес модели приказваш – Магенто си е продукт, точно както OSCommerce. Само че Магенто лично на мен ми харесва много много повече, има много по-удобен интерфейс, и няколко иновативни решения (като функционалност). Ако не си чел за Source Forge 2008 Community Awards, Магенто е победител с „best new project“. И какво е „фючър“ – „feature“ ли ?

    Comment by Kaloyan — август 18 @ 09:48

  13. Ами, подред ще дооточня и май ще успея да си изразя мисълтя цялостно..
    ЗФ е прасе наистина, но при CI не ми допада как всичко се зарежда в 1 клас, примерно:
    $this->load->library(’email’);
    $this->email->some_function();

    Ð’ случай, че ще се използва за някакво просто сайтче, така или иначе таз променлива „умира“ в един момент (след dispatch-a на controllera). Обаче, ако си седнеш да правиш малко по-сложна система понякога е по-удобно да си ползваш стандартния начин, които съществува примерно при ZF с $obj = new Class и в някой момент, можеш да го ънсетнеш/изчистиш.
    Ако ти трябва някакво „репозитори за обекти“ (ако мога така да го нареча), то при ZF си имаш Registry-то.

    Имам напредвид, че ZF не се опитва да разширява езика (при CI, ако не се лъжа са ползвали доста от magic functions) и колкото и да е тази глезотия товари безмислено при CI. Пак казвам, при малък проект е незабележимо, но..при голям може да стане проблем.

    ..Магенто – „best new project“ незнаех, но защо пък не. Като чисто нов проект, доста бързо се разви. Но между него и osCommerce има голяма разлика и това е в „performance“-a. Повечето потребители на отворен код, биха предпочели да ползват Магенто, като май той се оказва единствената поддържана алтернатива на osCommerce. Тук споменах за фючърите, защото в него има купища неща, някой хубави и удобни, но някой (в определени случай) ненужни. Те товарят + ZF (за един малък магазин) = доста изразходван перформънс.

    Иначе това което написа:
    „Един “фреймуърк” без истинско приложение е умряла работа.“
    Абсолютно си прав, нищо чудно точно поради тази причина от Zend, да се опитват да добавят основно „екзотични“ класове, а от там и наистина заприлича на PEAR.

    Comment by Любомир Петров — август 18 @ 20:59

  14. Това със „сетването“ и „ънсетването“ – май няма такъв филм. Заетта памет се чисти от GC, и дори и да ънсетнеш нещо, то няма да си освободи веднага паметта. Изключения правят ресурсите, които наистина се освободажават на момента – като картинките и резултатите от базата данни.

    За CI не знам какви magic неща има, но като се има предвид PHP4 съвмесимостта, по-скоро може би ползват overload(), въпреки, че не съм гледал какво има в карантиите. Иначе пайпинга за викане на неща мене ме кефи – свикнал съм след дългите години работа с jQuery и … Rudolf ;)

    Да не влизам в детайли, че пак ще стане някой дълъг коментар, обаче с нищо не съм съгласен от коментарите за Магенто ;) Определено не е инструмент за „малки магазинчета“. Коя от функционалсностите и възможностите вътри ти се струва излишна ?

    Comment by Kaloyan — август 18 @ 22:05

  15. Гледам, че тука май сте спецове… Да питам – случайно някой да има идея на host.bg как се инсталира Магенто? Борба неземна, само тормозя съпорта, въобще…

    Comment by me — ноември 9 @ 15:18

  16. Какъв точно е проблема ? Нали не се опитвате да го инсталирате на PHP4, защото няма да стане – трябва PHP5.

    Comment by Kaloyan — ноември 10 @ 00:19

  17. Сложил съм php 5 и модулите са инсталирани…
    Всичко е наред по изисквания:
    http://shop.pm-co.net/magento-check.php

    И резултата http://shop.pm-co.net/ – мъка!

    Пуснах и питане в Магентокомерс:
    http://www.magentocommerce.com/boards/viewthread/22658

    Нядавам се да успее някой да ми помогне :(

    Comment by me — ноември 11 @ 00:22

  18. Има всичко – PHP5, модули… shop.pm-co.net/magento-check.php
    -> shop.pm-co.net – Мъка!

    Пуснах и питане http://www.magentocommerce.com/boards/viewthread/22658/

    Някакви идеи? От Хост.бг казаха, че не знаят някой при тях да го ползва Магентото. Честно казано след 4 дена борба – вярвам им…

    Comment by me — ноември 11 @ 00:25

  19. и вече са ти и отговорили…

    http://www.magentohub.com/68/fix-run-into-500-internal-server-error-problem/

    Comment by peter — ноември 12 @ 12:42

  20. Хех, браво ;) Сега всичко ОК ли е ?

    Comment by Kaloyan — ноември 12 @ 13:18

  21. Сега ще пробвам чиста инсталация, че от толко екперименти… Но ТАМ където са дали отговора ми говорят за 755 права, а хост.бг изисква 755 при SafeMode Off, тъй че естествено съм го направил. Това ще бъде навярно последен опит… А, да, да спомена – ерор лог-а на хост.бг според предоставеното ми изобщо не показва съдържанието на грешката 500 Internal Server Error. Егато лога, а? Общо взето май ги метнах в космоса, и май ще сменям хостинга. Да не говорим, че последното което ми казаха е, че се зарежда http://shop.pm-co.net/index.php/install/ , а нямало такава папка – е това си е инсталацията, даже питах специално… Ужас. И най-последното ще бъде да ги помоля да направят chown -R username:username * каквото и да е това :D

    Comment by me — ноември 12 @ 21:02

  22. Просто за информация на хаората тук, тъй като ви надух главите :)
    И така не стана – официално се отказвам. Ще си взема хостинг в UK или USA с официален Магенто съпорт и край с мъките. Немам нерви повече :)

    Comment by me — ноември 13 @ 15:39

  23. […] да гледат, какво да барат и прочее. Благодарение на Калоян успях да се справя с част от проблемите, за което му […]

    Pingback by PHP Frameworks – кога и къде да ги ползваме — юни 17 @ 19:08

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.