Laravel ဘာလုိ ့ေပါက္?

Kelvin Morris
In burmese
Published in
3 min readOct 25, 2016
April 1, 2016 ကေရးခဲ့ပါသည္။

ဟိုတေန့က ကိုုကုုိရဲတုုိ ့နဲ ့ေတြ့ေတာ့ Laravel ဘာလုုိ ့ေပါက္သလဲ ဆုုိေတာ့ Open Source သမားေတြ ဝန္းရံၾကလိုု ့ ဆုုိျပီး ေျပာၾကေတာ့ ဟုုတ္ေတာ့ဟုုတ္တယ္။ ဒါေပမယ့္ မျပည့္စုုံေသးဘူး ထင္တာရယ္ ၊ ေျပာဖုုိ ့ရာကလည္း စာနဲ့ေရးျပမွ အဆင္ေျပမယ္ထင္လုုိ ့ အေတြးေတြကုုိ ျပန္စီျပီးေရးလုုိက္ပါတယ္။ Laravel အေၾကာင္းမေျပာခင္ အဲဒီမတုုိင္ခင္ ေခတ္ကာလက PHP Framework ေတြအေၾကာင္း ေျပာမွ ရမယ္။ ဒါမွ ဟပ္မိမွာေလ။

အဲဒီတုုံးက အခုု Javascript Framework ေတြပြထေနသလိုု PHP framework ေတြကအမ်ားၾကီးပဲ တရုုတ္က သုုံးျပည္ေထာင္မင္း ေတြမတုုိင္ခင္ သူတလူငါတမင္း အုုပ္ခ်ဳပ္ေနသလုုိ PHP Community ကလည္း Framework ေတြေပါ္မွာကြဲေနလုုိက္တာ။ ဒီၾကားထဲ တစ္ဖြဲ့နဲ ့တစ္ဖြဲ့ကလည္း သိပ္ၾကလုုိက္တာ ျမင္မေကာင္းဘူး။ အဲဒီတုုံးက Tutsplus ဆုုိတာ အခုုလုုိ ေျခာက္တီးေျခာက္ခ်က္ မဟုုတ္။ တစ္ေယာက္ေယာက္က Framework တစ္ခုု အေၾကာင္း tutsplus မွာတင္လုုိက္တာနဲ ့ ေအာက္မွာ သတ္ၾက သတ္ၾကတဲ့ comment ေတြက ရာခ်ီ။ Tutsplus မွ မဟုုတ္ တျခားဆုုိဒ္ေတြမွာလည္း ထုုိနည္းတူပါပဲ။ အလုုပ္အတြက္ သုုံးေနတဲ့သူေတြရဲ ့ျပႆနာက ဘယ္ Framework သုုံးမလဲ စဥ္းစားရတာက အလုုပ္တစ္ခုု။ တခါတေလ ဟိုု framework က ဟိုု feature ေလး ဒီမွာပါရင္ သိပ္ေကာင္းမွာပဲ ဆုုေတာင္းမိတာ အၾကိမ္ၾကိမ္ ၊ တခုုနဲ ့တခုုကလည္း ေရးတဲ့ပုုံစံက တူတာမဟုုတ္။ ေနာက္ဆုုိးတာက Library ေတြသုုံးမယ္ ဆုုိရင္ ခ်ိတ္ဖုုိ ့အတြက္ Adaptor လုုိမ်ိဳးေရးရတာ အလုုပ္တစ္ခုု။

အဲဒီေနာက္ပုုိင္းမွာမွ မွတ္မိသေလာက္ PHP 5.2 မွာ autoloading ပါလာတယ္။ Composer ေပါ္လာတယ္။ PSR ေတြစျဖစ္လာတယ္။ ရွိျပီး community ေတြက ေရးျပီးသားဆုုိေတာ့ ဒါေတြကုုိ adapt မလုုပ္ခ်င္ၾကဘူး။ အဲဒီ အခ်ိန္မွာ Laravel က စေပါ္ေတာ့ ေပါ္ေနျပီ။ 2 လား 3 လားေတာ့ မေျပာတက္။ က်ြန္ေတာ္က 3 မွာ စသုုံးတယ္။ အဲဒီတုုံးက ကုုိယ္ေရးေနၾက Framework က Controller to Route ဆုုိေတာ့ Route to Controller ျဖစ္ေနတာနဲ ့ တုုိင္ပတ္လုုိက္ေသးတယ္။ ဒါေပမယ့္ Route to Controller က ပုုိေကာင္းပါတယ္။ သုုိ ့ေသာ္ အဲဒီတုုံးက ဘယ္ဟာပုုိေကာင္းသလဲ အျငင္းအခုုန္ ျဖစ္လုုိက္ၾကတာ ေသာက္ေသာက္လဲ။ ေနာက္ဆုုံး အခုုေခတ္မွာေတာ့ Route to Controller က ႏုုိင္သြားတာေပါ့။ ဒါေပမယ့္ အဲဒီတုုံးက ႏွစ္ဖက္စလုုံးက အခ်က္အလက္ေတြနဲ ့ျငင္းၾကတာ ဆုုိေတာ့ ကိုုယ္လုုိ ကေလးတစ္ေယာက္ ဘယ္ဟာပုုိေကာင္းသလဲ ဆုုိတာ ေဝေဝဝါးဝါး။

ေနာက္ေတာ့ Laravel 4 မွာ အမွတ္မမွားဘူးဆုုိရင္ composer စသုုံးတယ္။ အဲဒီတုုံးက composer က တက္ခါစ။ CI တုုိ ့ Cakephp တုုိ ့က လူေတြကေတာ့ ဘာဂရုုစုုိက္စရာ လုုိသလဲ ဆုုိျပီး အဲဒီေလာက္ၾကီး အမူမထားဘူး။ ဒါေပမယ့္ Composer ေၾကာင့္ PHP Community မွာ package အေသးေလးေတြစေပါ္လာတယ္။ node.js က package ေတြေလာက္ေတာ့ ေသးခ်င္မွ ေသးမွာေပါ့ေလ။ အေသးေလးေတြျဖစ္ေတာ့ ကုုိယ္တႏုုိင္ေရးၾကရင္းနဲ ့ အသုုံးဝင္တဲ့ package ေတြအမ်ားၾကီးေပါ္လာေရာ။ တဖက္မွာလည္း Symfony က သူ ့ Project ေတြကုုိ composer မွာသုုံးလုုိ ့ရေအာင္ PSR standard နဲ ့ညိွေပးတယ္။ အဲဒီေတာ့ Laravel 4 မွာ Symfony Package ေတြေတြ ့ရမယ္။ တကယ္ေတာ့ 3 မွာကတည္းက မွတ္မိသေလာက္ Symfony ရဲ ့ Routing လုုိမ်ိဳးသုုံးခဲ့တယ္။ 4 မွာေတာ့ Form ေတြေရာ HTTP foundation ၾကီးတစ္ခုုလုုံးပါ သုုံးလုုိက္တယ္။ ေနာက္ေတာ့ Taylor Otwell က သူ ့ Eloquent ကုုိ Illuminate ရဲ ့ ေအာက္မွာ package တစ္ခုုအေနနဲ ့ထားျပီး ခြဲထုုတ္လုုိက္တယ္။ အဲဒီမွာ Laravel မသုုံးခ်င္လည္း Illuminate ကုုိသုုံးခ်င္တဲ့သူေတြ အတြက္ အလြယ္တကူသုုံးလုုိ ့ရသြားတာေပါ့။ အဲဒီမွာ Modularity Concept ထြန္းကားလာတာနဲ ့အမွ် Laravel နဲ ့တြဲသုုံးတဲ့ package ေတြတခ်ိဳ ့က Laravel ထဲပါလာတယ္။ တခ်ိန္တည္းမွာပဲ အေပါ္ကေျပာသလုုိ Laravel ကုုိပုုိျပီး ဝန္းရံျဖစ္ကုုန္တာေပါ့။ ဒါကလည္း အရင္တုုံးက တျခား Framework ေတြလုုပ္တဲ့ အခ်ိဳးျဖစ္တဲ့ “စားပြဲေပါ္က ကိတ္မွန္ ကုုန္ေအာင္စား” ဆုုိတဲ့ Concept ထက္စာရင္ “ႏုုိင္သေလာက္စား မကုုန္ရင္ အိမ္သယ္သြား” ဆုုိတာမ်ိဳးကုုိ လူေတြက ပုုိသေဘာက်က်တာပဲေလ။ အဲဒီေတာ့ Laravel ကုုိ မသုုံးရင္ေတာင္ Eloquent သုုံးတဲ့သူကလည္း Eloquent ကုုိ contribute လုုပ္ျဖစ္ရင္းနဲ ့ ၾကီးလာတာပဲေလ။ ေနာက္ပုုိင္းမွာေတာ့ Selenium လုုိ ေရွးက်တဲ့ ဘုုိးေတာ္ Library ေတြေတာင္ Packagist ကုုိ ေရြ့တဲ့ေနာက္မွာေတာ့ Framework အေဟာင္းေတြက သိပ္ေနာက္က်သြားပါျပီ။

ဒီၾကားထဲမွာ တစ္ဖက္ကျပန္ၾကည့္ရင္ CI ရဲ ့ Downfall ေတြလည္း အမ်ားၾကီးပါတယ္ ေျပာရမယ္။ CI ကုုိ ExpressEngine က ဝယ္ျပီးေနာက္ပုုိင္းမွာ ပုုိင္ဆုုိင္မႈကိစၥ မရွင္းမရွင္းျဖစ္ေတာ့ အဲဒီက Software Engineer ေတာ္ေတာ္မ်ားမ်ားက တျခား Framework ေတြကုုိ ေရာက္ကုုန္ၾကေရာ။ Fuelphp လုုိမ်ိဳး framework ေတြစေပါ္လာတယ္။ ဒါေပမယ့္ Laravel ေပါ္ျပီးေနာက္ပုုိင္းမွာ အဲဒီေလာက္ၾကီး သုုံးတဲ့သူ မေတြ ့မိေတာ့ဘူး။ အခုု ဒီႏွစ္ပုုိင္းမွာလည္း Laravel ဟာ 4 ကေန 5 အကူးအေျပာင္းကုုိ ေကာင္းေကာင္းမြန္မြန္ ေက်ာ္ျဖတ္ႏုုိင္ခဲ့တယ္။ အဲဒီအခ်ိန္က ကုုမၺဏီၾကီးေတြမွာ Senior Engineer ေတြက Laravel ကုုိသုုံးခ်င္ေပမယ့္ မသုုံးရဲေသးဘူး။ CI ေနာက္ပုုိင္း 2.xx version ေတြမွာလုုိ အၾကီးအက်ယ္ ေျပာင္းရင္ ဘယ္လုုိလုုပ္မလဲ ဆုုိတာကုုိ လန္ ့ၾကတယ္။ စေရးတဲ့သူေတြ အေနနဲ ့က ဘယ္လုုိမွ မေနေပမယ့္ ရွိျပီးသား Project ကုုိ version upgrade လုုပ္ဖုုိ ့ရာ အထဲက Code ေတြ ခဏခဏေျပာင္းေနရင္လည္း ခဏခဏ လုုိက္ fix ေနရမွာ မဟုုတ္ေသးဘူး။ လုုံးဝမေျပာင္းရင္လည္း ကုုိယ္ေတြလုုိ ေပါက္စ developer ေတြက မၾကိဳက္ၾကဘူး၊ ဘာမွမွ မထူးတာ ဆုုိျပီးေတာ့။ အဲဒီေတာ့ ႏွစ္ဖက္စလုုံး အဆင္ေျပေအာင္ ဆုုိျပီးေတာ့ Laravel 5 ကုုိ LTS ေပးမယ္ဆုုိျပီးေတာ့ ေၾကညာလုုိက္တယ္။ အဲဒီမွာ Enterprise application ကပါ Laravel ကုုိ သုုံးလာၾကတယ္။ ေနာက္ေတာ့ Laravel သုုံးရင္ overkill ျဖစ္မယ္လုုိ ့ယူဆတဲ့ဟာေတြအတြက္ Taylor က Lumen ကုုိ ေကာက္ထုုတ္လုုိက္တယ္။ Lumen ကုုိထုုတ္တာ ေၾကညာလုုိက္တာနဲ ့ Silex လုုိ mini-framework က သူတိုု ့က ဆက္မထုုတ္ေတာ့ဘူးေၾကညာလုုိက္တယ္။ အဓိကကေတာ့ မလုုိေတာ့ဘူး ဆုုိတဲ့သေဘာေပါ့။ အဲဒီမွာ laravel ဟာ mini-framework,framework နဲ ့ enterprise level အတြက္ target သုုံးခုုစလုုံးကုုိပါ အဆင္ေျပေစႏုုိင္တဲ့ framework ျဖစ္လာေတာ့တာပါပဲ။

ေနာက္အေရြ့တစ္ခုုကေတာ့ Jeffery Way က Tutsplus ကေနထြက္ျပီး Laravel ကုုိအာရုုံစုုိက္မယ့္ ScreenCast site တစ္ခုုလုုပ္လုုိက္တယ္။ အဲဒါကေတာ့ အခုု အားလုုံးသိေနၾကတဲ့ Laracast ပါပဲ။ Jeffery အေၾကာင္းသိတဲ့လူေတြက အဲဒီမွာ Laravel ကုုိသုုံးလာၾကတယ္။ Jeffery way ကေတာ့ အားလုုိသိတဲ့အတုုိင္း သူနဲ ့ထိတဲ့ အရာတုုိင္း ေရြွျဖစ္ေျပာလုုိ ့ရေအာင္ ၊ သူ ့tutorial မွာပါတာ အကုုန္လူသုုံးမ်ားၾကတယ္။ teaching skill လည္းပါတာေပါ။

အဲဒီေတာ့ community ၾကီးစည္ကားလာတာ မဆန္းပါဘူး။ Taylor နဲ့လည္းက Tutplsu မွာသူလုုပ္ကတည္းက ခင္ေတာ့ Laravel ရဲ ့ တခ်ိဳ ့ feature ေတြ ေရွ ့ဆက္သြားမယ့္ မူဝါဒ လမ္းစဥ္ေတြ (အလဲ့ :D ) ကုုိ သူ ့က ၾကိဳသိေနတာမ်ားတယ္။ အဲဒီေတာ့ သူက course ေတြျပင္ထားတာေပါ့။ ဟုုိက version တစ္ခုုထုုတ္လုုိက္တာနဲ ့ သူဆီမွာက series တစ္ခုုက ျပီးျပီးသား။ အဲဒီေတာ့ ေလ့လာခ်င္မယ့္လူက အဆင္သင့္။

တဖက္ကျပန္ၾကည့္ရင္ ဒီအေရြ့ေတြဟာ PHP community အေနနဲ ့ေျပာတာျဖစ္ျပီးေတာ့ တျခား community အေနကျပန္ၾကည့္ ဒီေျပာင္းလဲမႈက ဘာမွ ထူးျခားဆန္းၾကယ္တာ မဟုုတ္ဘူးလုုိ ့ထင္ေကာင္းထင္မယ္။ ဥပမာ ruby မွာဆုုိ gem ေတြဟာ ရွိတာျဖင့္ၾကာလွျပီ။ ထုုိနည္းတူပဲ Node.js စထြက္ျပီး သိပ္မၾကာခင္မွာပဲ npm ကပါလာတာပဲ။ python မွာလည္း pip နဲ့ easy_install ရွိတယ္။ ဒီေတာ့ အဆန္းတၾကယ္ေတာ့ မဟုုတ္ဘူး။ သုုိ ့ေသာ္ ဒီအေျခအေနထိ ေရာက္ေအာင္ အေတာ္ေလးကုုိ ၾကိဳးစားခဲ့ရတာ။ PHP 5 မတုုိင္ခင္က PHP ဟာ လူတုုိင္း လက္ညိဳးထုုိးခံရတဲ့ language။ Coding Standard ကလည္းမယ္မယ္ရရမရွိ ၊ Composer လုုိမ်ိဳးကလည္း မေပါ္ေသး ၊OOP လည္း မဟုုတ္တဲ့ အေနအထားကေန အခုုလုုိ Design Pattern ေတြ ထြန္းကားဖုုိ ့ကုုိ ၾကာခဲ့ပါေသးတယ္။

ေနာက္ျပီး Taylor Otwell က Github မွာ Pull request ေတြ အမ်ားၾကီးလာေပမယ့္ သူ ့ေကာင္းမယ္ထင္တာ ၊ သူရဲ ့ vision နဲ ့ကုုိက္ညီတာပဲေရြးခဲ့တာ။ ေျပာသမွ်လုုိက္လုုပ္ခဲ့တာ မဟုုတ္ဘူး။ အဲဒီေတာ့ စိတ္တုုိင္းမက်တာေတာ့ရွိရင္ရွိမွာေပါ့။ တဖက္ကျပန္ၾကည့္ရင္လည္း ႏုုိမုုိ ့ဆုုိ အကုုန္လုုပ္လုုိ ့ရတဲ့ အစုုံသုုတ္ၾကီးျဖစ္သြားမွာေပါ့။ တကယ့္တကယ္ သူကလည္း DHH လုုိပါပဲ။ ေတာ္ကီမၾကမ္းတာသာရွိမယ္။ အာဏာရွင္ေတာ့ ဆန္ပါလိမ့္မယ္။ သုုိ ့ေသာ္ အဲဒီလုုိမွ မလုုပ္ရင္လည္း လမ္းေၾကာင္းက တနည္းတဖုုံ ေျပာင္းသြားဦးမွာ။ ဒီဲၾကားထဲမွာ က်န္ခဲ့တာေတြ အမ်ားၾကီးရွိႏဳိင္ပါေသးတယ္။ မွတ္မိသေလာက္ ျပန္ေရးတာ ဆုုိေတာ့ အမွားပါတာ ရွိရင္ ဒါမွမဟုုတ္ Laravel နဲ ့ပတ္သတ္ျပီး ဘယ္လုုိ ထင္သလဲ ဆုုိတာ ေကာမန္ ့ေပးႏုုိင္ပါတယ္

--

--