Протеклог месеца, ЦакеПХП тим најавио покретање алфа издања верзије ЦакеПХП 3 . Развојни тим за Цаке сматра да је верзија 3 променљива игара, тако да је са алфа издањем верзије 3, која је сада већ врућа, овај чланак на нови начин ЦакеПХП 3 поново погледао као ефикасан савремени оквир за развој ПХП-а.
Ових дана постоји толико много могућности када је реч о томе ПХП развој . Како је ПХП сазревао, све више и више ПХП оквира долази на сцену, пружајући програмерима широк спектар избора. Али није увек било тако.
Још 2005. године, када је ПХП 4 још увек био стандард, није било ПХП оквира и развој објектно оријентисаног приступа кодирању у ПХП-у је свакако био изазов. Тада се појавио ЦакеПХП - први икада ПХП МВЦ оквир. У скоро 10 година од када је први пут објављен, ЦакеПХП је наставио да се развија, одржавајући здрав тржишни удео у ПХП програмери .
Колико је популаран ЦакеПХП оквир? Ранг је међу 4 најпопуларнија ПХП пројекта на ГитХуб-у, од око 130 000 пројеката, са преко 18 000 чланова у Гоогле групи ЦакеПХП са 32 000 тема. Са 270 сарадника на коду и 320 сарадника на документацији, не може се порећи да ЦакеПХП има велики број следбеника. Тренутно раширена и растућа популарност ЦакеПХП-а добро је резимирана у чланку аутора Јамес Ваттс , главни члан и менаџер заједнице ЦакеПХП-а за Цаке Софтваре Фоундатион , са којим сам интервјуисао током писања овог чланка.
Са верзијом 3 оквира који је сада доступан, од ЦакеПХП се сасвим сигурно очекује да остане водећа снага у ПХП свету и главни конкурент међу данашњим разноликим пејзажима ПХП оквира.
Овај преглед заснован је на алфа издању ЦакеПХП 3.0, које укључује бројне нове функције и побољшања, укључујући:
Боље перформансе. Верзија 3 укључује побољшања перформанси процеса боотстрап, процеса усмеравања и неколико делова процеса за генерисање помоћних шаблона.
Побољшане компоненте и помагачи. Верзија 3 пружа побољшану подршку за „флеш поруке“ са својим новим ФласхХелпер и ФласхЦомпонент . Осим тога ЦоокиеЦомпонент је побољшана, што олакшава раздвајање конфигурације простора имена колачића и руковање подацима колачића.
Побољшано управљање сесијама. Управљање сесијама је увек било статична класа у ЦакеПХП-у, што се на више начина показало проблематичним. Са верзијом 3, сада можете приступити сесији из објекта захтева $this->request->session()
. Ова промена такође олакшава тестирање сесије и омогућава употребу ЦакеПХП-а ПХПУнит 4.к .
Побољшана доследност конвенција. Костур апликације и костури додатака су ажурирани тако да користе исту структуру директоријума како би били међусобно досљеднији.
Теме и додаци су се стопили. Кључни циљ ЦакеПХП 3 био је да теме учине моћнијим и робуснијим. Радећи у правцу тог циља, постало је очигледно да су теме заиста потребне да би теме имале исте могућности као и додаци. Сходно томе, било који додатак се сада може користити као тема, што такође поједностављује паковање и прерасподелу.
Побољшања ОРМ-а. Неколико АПИ промена је направљено у ОРМ (објектно-релационо мапирање) . Оно што је најважније, сада је једноставније одредити дубоке асоцијације за уштеду операција, а неколико конвенција је промењено како би се смањила крива учења и збуњеност међу новим усвојитељима.
Поред тога, постоји неколико додатних функција које се такође планирају уградити у бета издање верзије 3.0. Најважније:
Заправо, верзија 3 представља значајну надоградњу у односу на претходне верзије ЦакеПХП-а.
Иако ЦакеПХП има много сјајних карактеристика, овај преглед фокусира се на неколико који га заиста помажу издвојити, а то су:
ЦакеПХП је увек био брз и доследан развој и, у том циљу, ЦакеПХП ставља велики нагласак на конвенције. Стога, као Руби на шинама (из чега је ЦакеПХП црпио већи део своје инспирације), ЦакеПХП се чврсто држи конвенција око конфигурације принцип.
Конвенције значе да програмер не мора да размишља о томе „где ствари иду“ док учи како да користи ЦакеПХП фрамеворк , пошто су задана правила за ова правила већ постављена. Иако се треба упознати са конвенцијама ЦакеПХП, када се једном савлада, програмер се може концентрисати на основни развој, уместо да треба да брине о томе где се код налази и другим проблемима са конфигурацијом.
Конвенције ЦакеПХП-а у потпуној су супротности са самим ПХП-ом, који је прилично либералан језик. Као резултат својих конвенција, ЦакеПХП помаже да се осигура више доследности у стилу и структури кодирања код више програмера, па чак и код више тимова. Усвајањем стандардног скупа конвенција, Цаке настоји да развој учини доследнијим.
На пример, за шему базе података, ЦакеПХП доноси одређене подразумеване претпоставке у смислу како ће бити именоване одређене променљиве, имена табела и поља. Конкретно, Цаке очекује да:
orders
)id
_id
(нпр. страни кључ у customers
табели би се именовао customer_id
).Да бисмо илустровали, размотримо једноставан преглед две табеле (articles
и users
) из базе података блога. У нашем примеру ћемо рећи да је Articles
„Припада“ а Users
и Users
„ХасМани“ Articles
. Ови односи би били наведени на следећи начин у ЦакеПХП 3.0:
In ArticlesTable.php: class ArticlesTable extends Table { public function initialize(array $config) { $this->belongsTo('Users'); } } In UsersTable.php: class UsersTable extends Table { public function initialize(array $config) { $this->hasMany('Articles'); } }
ЦакеПХП претпоставља подразумеване конвенције и на тај начин аутоматски зна које стране кључеве треба тражити (тј. user_id
У articles
табели) при дохватању било којих асоцијација.
Међутим, важно је нагласити да ЦакеПХП 3 ради омогућавају да се задане конвенције могу лако надјачати. На пример, рецимо да је наш страни кључ у users
табела се звала author_id
уместо user_id
. Навођење овог захтева само следеће две мале промене нашег кода да би ЦакеПХП знао да не користимо подразумевано:
In ArticlesTable.php: class ArticlesTable extends Table { public function initialize(array $config) { $this->belongsTo('Users' => ['foreignKey' => 'author_id']); } } In UsersTable.php: class UsersTable extends Table { public function initialize(array $config) { $this->hasMany('Articles' => ['foreignKey' => 'author_id']); } }
Дакле, иако су конвенције заиста саставни део ЦакеПХП-а и дефинитивно имају своје предности, њихово замењивање када је потребно је заиста једноставно, као што смо овде показали.
Иако неки програмери можда више воле ПХП оквире (попут Ово и Ларавел ) који се не ослањају толико на конвенције, конвенције ЦакеПХП у ствари могу бити врло корисне. Они могу помоћи драматично да смање време повећања за ЦакеПХП програмера када имају задатак да побољшају или одрже код који је написао други програмер, јер резултирају доследном структуром кодирања и конвенцијама на вишеструким Програмери ЦакеПХП и пројекти.
како бесплатно добити Блумберг терминал
Објектно-релационо мапирање (ОРМ) компаније ЦакеПХП има велике користи од оквирних конвенција компаније ЦакеПХП. Постављањем шеме базе података према Цаке-овим стандардима, можете брзо повезати табеле заједно преко Цаке-овог моћног ОРМ-а. Ретко ће вам требати да напишете СКЛ изјаву, јер ЦакеПХП обрађује ствари попут спајања табела, hasMany
, па чак и hasAndBelongsToMany
везе са лакоћом.
Користећи ЦакеПХП'с ContainableBehavior
, путем асоцијација модела можете одредити које табеле и поља базе података желите одабрати из СКЛ упита. То може ићи дубоко у неколико табела, а кроз ОРМ је лако брзо конструисати веома сложене СКЛ изразе.
Узгред, ЦакеПХП'с ContainableBehavior
је сјајан пример како ЦакеПХП може да поједностави и усмери ПХП развој. Помаже вам у претраживању и филтрирању података на чист и доследан начин, а такође може помоћи у повећању брзине и укупних перформанси ваше апликације. (Ради привремено или трајно мењајући асоцијације ваших модела, користећи испоручене садржаје за генерисање одговарајуће серије bindModel
и unbindModel
позива.)
Изазов са ОРМ-ом је што употребу СКЛ-а чини тако једноставном да, ако програмер није пажљив, може писати неефикасне СКЛ упите без смисла. Свакако сам много пута видео лоше написане Цаке апликације које нису поједноставиле своје упите. Ови проблеми имају тенденцију да се појаве неколико година након што је систем постављен, када базе података постају веће, а лоше написани упити постају све спорији.
Овде је главно питање да би пре најновије верзије ЦакеПХП 3 Цаке’с ОРМ подразумевано преузео било који повезане табеле приликом извођења упита. Као резултат, једноставан упит „пронађи све“ могао би постати прилично надувен јер би основни СКЛ дохватио све подаци из све повезане табеле. У верзији 3 ово понашање више није подразумевано. (А у претходним верзијама ЦакеПХП-а ово подразумевано понашање је лако онемогућити једноставним додавањем public $recursive = -1;
у вашу главну AppModel.php
датотеку.)
Генерално, преглед ОРМ-а Цаке показује да он заиста помаже усмеравању развоја и, ако се правилно користи, невероватан је алат за брзу изградњу сложених упита. Без обзира на то, витално је важно да програмери одвоје време да у потпуности разумеју ОРМ и да обезбеде да су њихови упити правилно оптимизовани (као што је тачно на било ком језику).
Једна од сјајних карактеристика ЦакеПХП-а су уграђене библиотеке - компоненте и помагачи - које елиминишу многе досадне, понављајуће и заморне развојне задатке. У контексту МВЦ, Компоненте помажу у рационализацији развоја контролера, док Помагачи поједноставити кодирање и логику приказа (тј. слој презентације).
Тхе PaginatorComponent
, на пример, ауто-магично гради следећи / претходни интерфејс странице из упита за проналажење. Додајте JsHelper
, и одједном имате АЈАКС пагинацију, коју покреће ваш омиљени ЈаваСцрипт оквир ( јКуери подразумевано).
Брзо узорковање других корисних помагача укључује:
TimeHelper
: Олакшава приказ датума и времена, пружајући низ функција за форматирање и процену временских вредности.NumberHelper
: Пружа погодне методе за приказивање бројева у разним уобичајеним (или прилагођеним) форматима и прецизностима.TextHelper
: Помаже у омогућавању веза, форматирању УРЛ-ова, стварању одломака текста око одабраних речи или фраза, истицању кључних речи у блоковима текста и грациозном скраћивању дугих делова текста.И постоје много више .
Свакако, сваки оквир има своје предности и недостатке, а ЦакеПХП није изузетак. Ево неколико најчешћих критика на рачун ЦакеПХП изван овог прегледа:
„Оставински оквир; надута и спора “. Ова критика је обично више историјска, са ограниченом (ако уопште постоји) истином данас. Подржавање ПХП верзија још од ПХП 4 у прошлости је захтевало од ЦакеПХП-а да се бави многим наслеђеним проблемима ПХП-а. Сазревањем ПХП-а, а посебно издањем ЦакеПХП верзије 3, овај навод је заиста изгубио на снази.
„Превише строго и ограничено.“ Иако постоје јасне предности конвенција ЦакеПХП, постоје они који их ипак критикују. Критичари често тврде да су конвенције сувише строге, али не успевају да препознају (или не признају) да су те конвенције моћи бити лако надјачани. Усвајањем стандардног скупа конвенција, Цаке настоји да развој учини конзистентним, што би, с обзиром на ПХП-ову иначе лабаву праксу кодирања, требало сматрати само позитивном ствари.
„Циклус успореног отпуштања“. Циклус успореног ослобађања није нужно лош. Супротно томе, превише агресиван циклус издавања заправо може бити проблематичнији. У ствари, део разлога због којег су потребна главна издања ЦакеПХП-а јесте осигуравање повратне компатибилности са ранијим верзијама ПХП-а које су још увек широко примењене. Штавише, овај конзервативни циклус издања и нагласак на компатибилности уназад елиминише потребу за великим (и честим) променама вашег кода када се објаве нове верзије. Такође треба напоменути да је тим ЦакеПХП 3 све али споро када су у питању мања издања (исправке грешака, закрпе, мања побољшања итд.) која се издају месечно . Слично томе, на већину улазница за грешке се одговара унутар сати од постављања.
„Није готово решење.“ За разлику од многих других модерних ПХП оквира „веб апликација из кутије“ (као што је Иии, на пример), ЦакеПХП циљано подржава и омогућава прилагођена решења. Лично сам од тога имао велику корист у развоју великог броја прилагођених веб страница и апликација заснованих на базама података.
„Користи низове података, а не објекте.“ То више није тачно, од верзије 3. У претходним верзијама, сви подаци би требали бити ускладиштени и референцирани као угнежђени низови (нпр. $user['User']['username']
). ЦакеПХП 3 се коначно обраћа томе, уместо да податке чува као објекте (нпр. $user->username
).
„Лоша документација.“ Ова критика има одређену ваљаност, јер изгледа да документација о ЦакеПХП-у није увек написана с почетком у виду (о важним информацијама се понекад говори у само реченици или две, док би неколико пасуса расправе вероватно било оправдано ). Тим за израду торти је свестан тога и ради на томе да у складу с тим побољша документацију. У ствари, почетна страница документације ЦакеПХП 3 изричито наводи висок ниво посвећености „квалитету, валидности и тачности“ документације. Како је ЦакеПХП оквир који покреће заједница, укључено је дугме „Побољшај овај документ“ сваки страницу документације, омогућавајући и подстичући кориснике ЦакеПХП-а да додају своје сопствене додатке, брисања или исправке у документацију.
Све у свему, скоро 10 година након свог почетног издања, преглед ЦакеПХП-а открива да остаје живахан и застрашујући конкурент многим другим ПХП оквирима који су се од тада појавили.
ЦакеПХП је комплетно и свеобухватно решење за развој. Основа кода је зрела и функционалност делује бескрајно. Све у свему, Цаке је направљен да убрза развој, што је важно не само за програмере већ и за инвеститоре. Највећи трошак развоја софтвера су трошкови развојног времена, а ЦакеПХП има за циљ да значајно смањи време развоја.
ЦакеПХП је пројекат који води заједница. Може бити само боље како се све више људи укључује. Будући да сам укључен 7 година и видим како заједница наставља да расте, узбуђена сам због следеће фазе за ЦакеПХП. Покретање ЦакеПХП 3 и зрелост ПХП-а и ЦакеПХП-а значи да ће оквир и даље бити све бољи и бољи.
Ако тражите решење засновано на ПХП-у које нуди многе погодности сличне Руби он Раилс-у (у погледу једноставности употребе и конвенционалности у вези са конфигурацијом), онда завртите ЦакеПХП. Тхе Водич за блог ЦакеПХП потребно је само неколико минута да се постави и покрене, или, алтернативно, ЦакеЦодед нуди серију јасних лекција које ће помоћи да ПХП програмера упозна са ЦакеПХП-ом и да започне да га користи. Помоћу ових ресурса брзо ћете видети у којој мери ЦакеПХП може убрзати и побољшати ваше напоре у развоју ПХП софтвера. Уживати!
Мицхаел Хоугхтон је АпееСцапе Инжењер са седиштем у Ирској са богатим ЦакеПХП искуством. Развио је преко 100 веб страница са тим оквиром, радио са тимом у ЦакеДЦ (комерцијални ентитет који стоји иза оквира ЦакеПХП), послао је разне закрпе и помогао у ЦакеПХП документацији.