Добавено на: 2010-05-06 21:45:45
Днес ще поговорим за няколко по основни framework-а. Zend, symfony, codeigniter, ruby on rails.
1.symfony
Framework-а, който най-малко съм ползвал от всичките изброени. Все пак впечатленията са ми, че това е най-добрия фреймуорк за php. Поради причината, че имат плъгин система която се прави от ентусиасти които са направили такъв огромен брой, че каквото ви трябва го има. (Плъгините са модули които допълнително се инсталират към framework-а и вършат нещо вместо да го пишете от нулата). Много използвани такива са за прелистване на страници, ресайз на снимки, изпращане на майлове и т.н. Има вградена система за админ панел което е нещо доста приятно и удобно. Труден е за начинаещи и не ви съветвам да почвате с него освен ако не сте се въоръжили с голяма доза търпение.
2. Zend framework
Въпреки името си искам да ви кажа, че поне според мен това не е никакъв framework. Това е система от модули който можете да ползвате. Идеята на проекта впрочем е точно такава. Продукта има за цел да ви остави да бъдете програмисти и да имате повече възможност.
Зенд има много силен екип. Ако почнете да търсите статии „за” и „против” продукта ще попаднете на блогове който коментират положителни и отрицателни страни. Интересното тук е, че във всеки втори такъв,а ако не и във всеки, шефа на проекта Синклер се обажда с коментар. Тоест много отговорно се отнасят тези хора към работата си. Интересното е, че дори той признава, че по-добър framework от ruby on rails няма към момента, но самите те не се стремели да го стигнат понеже развиват проекта си в друга насока.
Та самия Зенд е доста сложен на фона на codeignitera примерно. Има конвенция която трябва да се спазва при писането на един прост хелпър. Тоест името на папката пък долна черта името на файла и етц глупости който са доста досадни. Не че е проблем, но защо да се мъчим да го правим. Трябва да прецените кои модули ще ползвате и да махнете останалите от папката lib/zend понеже всички модули до 1.8.7 бяха към 50мб. А това е безумие. Представете си, че искате да напишете личния си блог на зенд и се оказва, че сайта ви е 53мб примерно. А реално писано inline няма и 1мб. Оптимизация и разбираме му е майката на framework-a.
Все пак стига лошо. Аз лично много го харесвам framework-а и съм написал няколко сайта на него. Като пример е http://www.livenews.bg
Идеята да го харесвам не е защото е готин, лесен или забавен за работа. Харесвам го заради сериозността на екипа и понеже знам, че хората който го правят няма да се спрат до като не стане най-добрия framework за php.(макар, че той и сега може да се определи като най-добрия). Все пак това е framework за по-мащабни проекти. Няма идея да се ползва за малки сайтове.
Имате едно приятно загубено време докато го нагласите. Докато кажете ползвай ми хелпърите и т.н. Примерно в bootstrap файла се пише:
А пък ако искате да правите декорация на форми. Ох това е интересна материя.
Тоест правите форма html-ска която обаче си има зенд еквивалент. Адването на класове към формата и т.н. е направено безумно тежко. Няма да разеснявам горния пример. Слагам го за да се види колко тежко е направено едно просто нещо. Същото се отнася и до почти всичко, но да не влизам в подробности. С две думи кофти работа е, но има най-добрата поддръжка и дава сигурност за бъдещето. Това което няма е ресайз на снимки, но не е фатално понеже можете да ползвате доста готови класове за случая.
3.codeigniter
Определено мини еквивалент на зенд. Стила на работа писането е 1 към 1 само, че думите не са така дълги и сложни, а са малки и запомнящи се. Писането на конвенции е вградено и не се налага да правите нищо.
От zend на codeigniter се минава точно за 1 час. Обратното е малко по-сложно. Имаме като предимство клас за снимки и като минус много апи приложения и не до там добра подръжка. Определено много бърз и страхотен framework за малки сайтове. Може би и за големи, но аз лично не бих го ползвал за сериозни цели.
Лесно се учи и е лесен за ползване. Но защо да изберем лесното и не до там добро когато имаме зенд? Все пак въпрос на личен избор. Кодеигнитера е перфектен за начинаещи. Имате си конфиг папка където слагате параметрите на базата(И на Зенд има config.ini, но за разлика от codeingitera трябва сам да пишеш всичко в него). Кой контролер с view да зарежда първо и т.н. и т.н. Имате си и scaffold който ви генерира web вариант за да попълвате базата си. Лигавщини с една думи. Формите са супер удобни и лесни. Само добри думи за него, но аз никога не бих седнал сериозно на него при положение, че има зенд.
4.ruby on rails
Framework-а както се разбира от името му е framework за руби. Това да не стряска php програмистите понеже езика е близък до php. Проблема по-скоро е изцяло обектно ориентирания модел, който се ползва. Тоест логиката на писане е трудно да се хване из начало при преминаване от php към ruby. А и си имаме http://railsforphp.com/reference/pcre/preg_replace който като напишеш php команда ти дава еквивалента. Това за тези който знаят php е огромен плюс.
Та framework-а е най-добрия от изброените по-ред причини.
1. Кода който пишете на ruby on rails е пъти по-малко от колкото на който и да е framework за php. От тук идва и това, че сайт на ruby on rails ще се напише пъти по-бързо от колкото на зенд и т.н.
2. Плъгин система която се прави от ентусиасти както при symfony ти предоставя почти всичко което искаш да не кажа всичко.
3. Безброй много хелпъри, който ти улесняват живота. Не че не можеш да си напишеш сам нещо, но защо да пиша 3-4 реда вместо 1 кратък. Примерно:
Tова какво значи. При бройка 1 ви извежда 1 коментар. При всичко различни имате 2,3,5 и т.н. коментарА.
Това ти слага ... след 20-тия знак. И т.н. Благинки колкото поискате.
Имате мигране на дб което ви дава възможност да не пипате phpmyadmin за да оправяте базата. ДБ се генерира през конзола. Адването и премахването на колони също. Няма да се спирам подробно на процеса.
Имате конфиг файл като при кодеигнитера където си пишете парола и дб и всичко тръгва. Имате си предимствата на самия език ruby. Обработката на стринг. Класовете за дата и т.н. са определено много лесни за ползване.
Примерно сега популярно е вместо час и дата да излиза с думи „публикувано преди 1 ден”, преди 1 час, преди половин минута и етц.
Това се решава като проблем като напишете time_ago_in_words(променливата за датата). Това какво ще изведе може да се преправя, но за това по натам.
Когато генерирате един контролер той си идва с всички необходими неща. Хелпър,view-та и прочие.
В следващия материал ще разкажа на кратко за архитектурата на framework-овете. Как работят какви папки имат за какво се борят и защо са по удобни от колкото да пишете „чист” език.
1.symfony
Framework-а, който най-малко съм ползвал от всичките изброени. Все пак впечатленията са ми, че това е най-добрия фреймуорк за php. Поради причината, че имат плъгин система която се прави от ентусиасти които са направили такъв огромен брой, че каквото ви трябва го има. (Плъгините са модули които допълнително се инсталират към framework-а и вършат нещо вместо да го пишете от нулата). Много използвани такива са за прелистване на страници, ресайз на снимки, изпращане на майлове и т.н. Има вградена система за админ панел което е нещо доста приятно и удобно. Труден е за начинаещи и не ви съветвам да почвате с него освен ако не сте се въоръжили с голяма доза търпение.
2. Zend framework
Въпреки името си искам да ви кажа, че поне според мен това не е никакъв framework. Това е система от модули който можете да ползвате. Идеята на проекта впрочем е точно такава. Продукта има за цел да ви остави да бъдете програмисти и да имате повече възможност.
Зенд има много силен екип. Ако почнете да търсите статии „за” и „против” продукта ще попаднете на блогове който коментират положителни и отрицателни страни. Интересното тук е, че във всеки втори такъв,а ако не и във всеки, шефа на проекта Синклер се обажда с коментар. Тоест много отговорно се отнасят тези хора към работата си. Интересното е, че дори той признава, че по-добър framework от ruby on rails няма към момента, но самите те не се стремели да го стигнат понеже развиват проекта си в друга насока.
Та самия Зенд е доста сложен на фона на codeignitera примерно. Има конвенция която трябва да се спазва при писането на един прост хелпър. Тоест името на папката пък долна черта името на файла и етц глупости който са доста досадни. Не че е проблем, но защо да се мъчим да го правим. Трябва да прецените кои модули ще ползвате и да махнете останалите от папката lib/zend понеже всички модули до 1.8.7 бяха към 50мб. А това е безумие. Представете си, че искате да напишете личния си блог на зенд и се оказва, че сайта ви е 53мб примерно. А реално писано inline няма и 1мб. Оптимизация и разбираме му е майката на framework-a.
Все пак стига лошо. Аз лично много го харесвам framework-а и съм написал няколко сайта на него. Като пример е http://www.livenews.bg
Идеята да го харесвам не е защото е готин, лесен или забавен за работа. Харесвам го заради сериозността на екипа и понеже знам, че хората който го правят няма да се спрат до като не стане най-добрия framework за php.(макар, че той и сега може да се определи като най-добрия). Все пак това е framework за по-мащабни проекти. Няма идея да се ползва за малки сайтове.
Имате едно приятно загубено време докато го нагласите. Докато кажете ползвай ми хелпърите и т.н. Примерно в bootstrap файла се пише:
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' = '',
'basePath' = dirname(__FILE__),
));
return $autoloader;
}
);
А пък ако искате да правите декорация на форми. Ох това е интересна материя.
$element-setDescription($desc);
$element-setDecorators(array(
'ViewHelper',
'Description',
'Errors',
array('HtmlTag', array('tag' = 'dd')),
array('Label', array('tag' = 'dt')),
));
Тоест правите форма html-ска която обаче си има зенд еквивалент. Адването на класове към формата и т.н. е направено безумно тежко. Няма да разеснявам горния пример. Слагам го за да се види колко тежко е направено едно просто нещо. Същото се отнася и до почти всичко, но да не влизам в подробности. С две думи кофти работа е, но има най-добрата поддръжка и дава сигурност за бъдещето. Това което няма е ресайз на снимки, но не е фатално понеже можете да ползвате доста готови класове за случая.
3.codeigniter
Определено мини еквивалент на зенд. Стила на работа писането е 1 към 1 само, че думите не са така дълги и сложни, а са малки и запомнящи се. Писането на конвенции е вградено и не се налага да правите нищо.
От zend на codeigniter се минава точно за 1 час. Обратното е малко по-сложно. Имаме като предимство клас за снимки и като минус много апи приложения и не до там добра подръжка. Определено много бърз и страхотен framework за малки сайтове. Може би и за големи, но аз лично не бих го ползвал за сериозни цели.
Лесно се учи и е лесен за ползване. Но защо да изберем лесното и не до там добро когато имаме зенд? Все пак въпрос на личен избор. Кодеигнитера е перфектен за начинаещи. Имате си конфиг папка където слагате параметрите на базата(И на Зенд има config.ini, но за разлика от codeingitera трябва сам да пишеш всичко в него). Кой контролер с view да зарежда първо и т.н. и т.н. Имате си и scaffold който ви генерира web вариант за да попълвате базата си. Лигавщини с една думи. Формите са супер удобни и лесни. Само добри думи за него, но аз никога не бих седнал сериозно на него при положение, че има зенд.
4.ruby on rails
Framework-а както се разбира от името му е framework за руби. Това да не стряска php програмистите понеже езика е близък до php. Проблема по-скоро е изцяло обектно ориентирания модел, който се ползва. Тоест логиката на писане е трудно да се хване из начало при преминаване от php към ruby. А и си имаме http://railsforphp.com/reference/pcre/preg_replace който като напишеш php команда ти дава еквивалента. Това за тези който знаят php е огромен плюс.
Та framework-а е най-добрия от изброените по-ред причини.
1. Кода който пишете на ruby on rails е пъти по-малко от колкото на който и да е framework за php. От тук идва и това, че сайт на ruby on rails ще се напише пъти по-бързо от колкото на зенд и т.н.
2. Плъгин система която се прави от ентусиасти както при symfony ти предоставя почти всичко което искаш да не кажа всичко.
3. Безброй много хелпъри, който ти улесняват живота. Не че не можеш да си напишеш сам нещо, но защо да пиша 3-4 реда вместо 1 кратък. Примерно:
Pluralize(бройка, ‘коментар’, ‘коментара’)
Tова какво значи. При бройка 1 ви извежда 1 коментар. При всичко различни имате 2,3,5 и т.н. коментарА.
Truncate(text, :length => 20)
Това ти слага ... след 20-тия знак. И т.н. Благинки колкото поискате.
Имате мигране на дб което ви дава възможност да не пипате phpmyadmin за да оправяте базата. ДБ се генерира през конзола. Адването и премахването на колони също. Няма да се спирам подробно на процеса.
Имате конфиг файл като при кодеигнитера където си пишете парола и дб и всичко тръгва. Имате си предимствата на самия език ruby. Обработката на стринг. Класовете за дата и т.н. са определено много лесни за ползване.
Примерно сега популярно е вместо час и дата да излиза с думи „публикувано преди 1 ден”, преди 1 час, преди половин минута и етц.
Това се решава като проблем като напишете time_ago_in_words(променливата за датата). Това какво ще изведе може да се преправя, но за това по натам.
Когато генерирате един контролер той си идва с всички необходими неща. Хелпър,view-та и прочие.
В следващия материал ще разкажа на кратко за архитектурата на framework-овете. Как работят какви папки имат за какво се борят и защо са по удобни от колкото да пишете „чист” език.

Важното е работа да има и клиентите да са доволни.