Zend, symfony, codeigniter или ruby on rails
Днес ще поговорим за няколко по основни 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 файла се пише:


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-овете. Как работят какви папки имат за какво се борят и защо са по удобни от колкото да пишете „чист” език.
Коментирай
 
Потребител : *
Сайт (URL) :
Коментар : *
Въведи текста : *
 __   _      ___      _  _     _____    _    _   
| || | ||   / _ \\   | \| ||  |  ___|| | |  | || 
| '--' ||  | / \ ||  |  ' ||  | ||__   | |/\| || 
| .--. ||  | \_/ ||  | .  ||  | ||__   |  /\  || 
|_|| |_||   \___//   |_|\_||  |_____|| |_// \_|| 
`-`  `-`    `---`    `-` -`   `-----`  `-`   `-` 
                                                 
 
преди 1 година
Така е прав си:) На каквото иска клиента на това се пише.

Важното е работа да има и клиентите да са доволни.
преди 1 година
Основно защото не ми е останало време за него, а наблегнахме на кейка. Познаването на различни фреймуърци дава възможност за повече гъвкавост в началото на проект (точно както и на различни езици). До колко голямо богатство е - не знам, но като фрийленсър на мен ми се налага да поемам проекти, които трябва да бъдат написани или вече са започнати на нещо конкретно, така че - the more, the better. :)

Като цяло не съм голям любител на PHP, но пазарът за уеб в България го налага в голяма степен. Ако релсите се наложат, неизбежно ще се ориентирам и натам (за момента само чета ревюта и примери).
преди 1 година
Все пак защо CakePHP, а не simfony?

Това непрекъснато сменяне на framework-ове не е голяма идея:) Освен ако някои не ти го налага. Виж сменянето на езиците вече е нещо хубаво:) Както сам знаеш. Когато се върнах на php от ruby помня колко по-различно погледнах на езика.

Относно времето за работа. Не мисля, че зависи от framework-ка. По скоро каква част ползваш от кода които си писал. Не помня да съм правил проект от 0 на Zend като изключим първите 2-3:)

Относно тежината. Ами има много класове които не ползваш. Може да оптимизираш папката Zend до като стане доста малка.

Аз лично се надявам ruby то да набере сила. Много го харесвам като език пък и framework-ка ruby on rails е...без забележки:)

Ако нещо съм пропуснал във видео-тата, а те интересува може да кажеш:)
преди 1 година
За мен Zend обикновено е излишно тежък за нещата, които аз правя, както и за изискваните срокове. По тази причина последните 4 месеца работя над един Django и един CakePHP проект, а през последната година пиша почти изцяло Cake (когато зависи от мен) :)

Ще мога да дам по-обективна оценка за Zend след 2-3 месеца, в случай че се заема с един конкретен проект върху технологията. Засега правя съпоставка с някои Java frameworks, а там винаги съм губил ужасно много време с тривиални неща (нещо, което е много добре измислено в Rails, както сам си споменал горе). Няма нужда да преоткриваме топлата вода.
преди 1 година
Много интересни неща казваш. Чак да му се прище на човек да го разгледа този CakePHP.

Чесно казано вече почти не помня в детайли CodeIgniter-a. Все пак избора на framework не се свежда само до това дали ти харесва или не.
Гледа се екипа който го прави. Гледа сe време на update. Реакцията при бъгове и т.н. Тази съвкупност прави Zend-а интересен за хората.
Мисля, че не само CakePHP, но и simfony предлага неща който само се надявам някои ден да влезат и при зенд.

Определено да се почне от framework без да си програмирал на езика е глупост. Подкрепям.

Генератор на админ панел има simfony, Zend няма. Един от недостатаците на проекта.

Интересно ми е преобладаващо с кои framework работиш?

По принцип Zend над повърхоността от добре направени базисни класове има доста проблеми. Имплементацията на dojo, jquery е пълна с бъгове. Така е и при повечето не дотам "известни" класове които не се ползват толкова често.

Ако ще сменям Zend от към php framework бих избрал simfony.
преди 1 година
Работил съм с няколко уеб фреймуърка от 3 различни езика и CodeIgniter е моята препоръка за първи фреймуърк на начинаещи и не само уеб програмисти. Не е добра идея да се стъпва директно върху framework, ако няма основни познания в езика, макар и да се случва. От друга страна PHP е доста неорганизиран и неконвенционален език и CodeIgniter дава достатъчна основа и MVC структура като начало - без да пречи на изучаването на езика и давайки достатъчно свобода (и възможност за създаване на олекотени приложения).

Тъй като последните 2 дни разучавам Zend (поради което попаднах в блога) виждам много повече прилики с CakePHP - рутинга, файловата структура, layout-ите, отчасти ORM-а. Основната разлика е една - Cake предлага повече мощност откъм DRY (don't repeat yourself) и има много добър CRUD генератор на административен панел. Не знам дали Zend има нещо такова, но за CMS системи Cake спестява достатъчно време, за да може всичко да стартира from scratch във всеки един проект и да се ползват единствено стандартни модули.
преди 1 година
Мерси за хубавите думи:)

За CakePHP не съм писал нищо понеже така и не ми стигна времето да го разгледам.

За CodeIgniter може и да си прав. Може би израза "мини еквиралент на зенд" не е точен.
Все пак преминаването от Zend към CodeIgniter е доста лесно и приятно. Поне на мен така ми се стори.
преди 1 година
Много добър блог, поздравления за което. Въпреки това съм склонен да не се съглася с приликата на CodeIgniter и Zend. Не смятам, че имат много общи неща, макар и да може да се include-не Zend в CI проект.

Пропуснал си и друго важно нещо в бранша - а именно CakePHP. Първо, доста популярен, и, второ, взаимствал много концепции от релсите.
Предложи тема
Предложение от : *
Тема : *
Описание : *