Rain PHP Framework နှင့် PHP Framework အားမြည်းစမ်းခြင်း
ယနေ့ခေတ် လိုအပ်ချက်များအရ PHP Web Application များအား ရေးသားကြသောအခါ Pure PHP အစား PHP Framework များကို အသုံးပြုမှု များလာကြပြီ ဖြစ်ပါတယ်။ PHP Framework ကို အသုံးပြုတဲ့အခါ ဘာအကျိုးကျေးဇူး တွေ ရရှိနိုင်ပါသလဲ။ ဒါ့အပြင် ဘာအခက်အခဲတွေ တွေ့လာနိုင်ပါသလဲ။ အကျိုးကျေးဇူးတွေ အနေနဲ့ ပထမဆုံး database ကိုချိတ်ဆက်တဲ့ အပိုင်းတွေမှာ config file တစ်ဖိုင်ထဲကို ပြင်ပေးရုံနဲ့ အလွယ်တကူ ချိတ်ဆက်နိုင်ပါတယ်။ ဒါ့အပြင် တစ်ခြားလိုအပ်တဲ့ Authentication အပိုင်းတွေ db insert, query လုပ်တာတွေကို လဲ အလွယ်တကူ လုပ်ဆောင် နိုင်ပါတယ်။ ဒါတွေက အခြေခံ အချက်အလက်တွေသာ ဖြစ်ပြီးတော့ အခြားအချက်အလက်တွေ အများကြီး ရှိပါသေးတယ်။ Framework ပေါ်မှာ မူတည်ပြီးတော့ အားသာချက် အားနည်းချက်တွေ ရှိပါတယ်။ Framework အများစုက MVC design pattern ပေါ်မှာ အခြေခံပြီးတော့ တည်ဆောက်ကြပါတယ်။ MVC ဆိုတာကတော့ Model View Controller ကိုဆိုလိုတာပါ။ Data တွေ insert လုပ်တာ update လုပ်တာ အစရှိတဲ့ data control အပိုင်းကို Model က တာ၀န်ယူထားပါတယ်။ View ကတော့ user interface အပိုင်းပဲ ဖြစ်ပါတယ်။ Controller ကတော့ user လိုအပ်ချက်ပေါ် မူတည်ပြီးတော့ သက်ဆိုင်ရာ Model ကို လှမ်းခေါ်ခိုင်းတယ်။ ထွက်လာတဲ့ data တွေကို View file ကိုပေးပြီးတော့ output ပြန်ထုတ်ခိုင်းပါတယ်။ Controller ဆိုတဲ့အတိုင်း အဓိက control လုပ်ပေးနေတာပဲ ဖြစ်တယ်။ Framework အသုံးပြုတဲ့ အတွက် အားနည်းချက်တွေကတော့ ကိုယ်အသုံးပြုမယ့် framework ရဲ့ အကြောင်းကို လေ့လာရမှာပဲ ဖြစ်ပါတယ်။ ဒီအတွက် အချိန်ပေးရတော့ပါမယ်။ ![]()
ဒီနေ့ အချိန်အထိ တော့ Zend Framework က PHP Framework လောကမှာ ဦးဆောင်နေပါတယ်။ ဒါပေမယ့် CI လို့ခေါ်ကြတဲ့ Codeigniter Framework ကလဲ နောက်ပိုင်းမှာ အသုံးပြုသူ ဦးရေတိုးပွားလာပြီး နာမည်ကြီး framework တစ်ခုဖြစ်လာပါပြီ။ ဒါဆို CI နဲ့ ဘာလို့မမြည်းစမ်းခိုင်းတာလဲဆို Myanmartutorials မှာလဲ ရှိပြီးသားဖြစ်နေတာရယ်၊ CI တစ်ခုလုံးအကြောင်းပြောရမယ်ဆိုရင် အပိုင်းလဲတော်တော်များသွားနိုင်ပါတယ်။ အဓိကကတော့ ကျွန်တော် ရေးရမှာ ပျင်းနေရင် တို့လို့တန်းလန်း ဖြစ်နေမှာလဲ ဆိုးလို့ပါ။ ![]()
CI အကြောင်းသိချင်ရင်တော့ mmtuts က ဆြာကေ တို့ ဆြာနိုင်လင်းအောင်တို့ ကိုတိုက်တွန်းနိင်ပါတယ် ![]()
Rain framework ကို http://www.rainframework.com ကနေ Download ဆွဲနိုင်ပါတယ်။
ဒေါင်းပြီးပြီဆိုရင်တော့ zip ဖြည်ပြီး localhost က server ထဲကိုထည့်လိုက်ပါ။
ကျွန်တော်ကတော့ rain ဆိုတဲ့ folder ဆောက်ပြီးထည့်လိုက်ပါတယ်။
ပြီးသွားရင် config folder ထဲက db.php ကိုဖွင့်ပါ။ ပြီးရင်အောက်ကပုံမှာ ပြထားတာတွေကို ဖြည့်ပေးပါ။
Database name ဆိုတာကတော့ phpMyAdmin ထဲကနေ ကိုယ်ဆောက်ပေးလိုက်တဲ့ dbname ပဲဖြစ်ပါတယ်။ ကျွန်တော်ကတော့ rain ဆိုပြီး db အသစ်ဆောက်ပေးထားပါတယ်။
ဒါတွေပြုလုပ်ပြီးတဲ့ အခါမှာ browser ကနေ ခေါ်လိုက်ပါမယ်။ http://localhost/rain ဆိုပြီးတော့ ကျွန်တော်ခေါ်လိုက်တဲ့အခါမှာ ဒီလိုမျိုးတွေ့ရပါမယ်။
အနီရောင်နဲ့ ၀ိုင်းပြထားတာကတော့ ဒီpage ကိုခေါ်တဲ့ အခါ သုံးတဲ့ memory usage တွေ execute လုပ်တာကြာတဲ့ အချိန်တွေပဲ ဖြစ်ပါတယ်။ memory usage ကိုကြည့်မယ်ဆိုရင် တော်တော်နဲတာကို တွေ့ရပါမယ်။
စပြီးတော့ ရေးကြည့်ကြရအောင်။
app folder ထဲက controllers folder ထဲကိုသွားပါ။ ပြီးရင် Rain ဆိုတဲ့ folder တစ်ခုဆောက်ပေးပါ။ ပြီးရင် ဒီ folder ထဲမှာ Rain.php ဆိုတဲ့ file တစ်ခုလုပ်ပေးပါ။
ပြီးရင် app folder ထဲကပဲ models ထဲမှာလဲ Rain.php ဆိုပြီး file တစ်ခုလုပ်ပေးပါ။
နောက်ထပ် app folder ထဲက views ဆိုတဲ့ folder ထဲမှာ rain ဆိုတဲ့ folder တစ်ခုလုပ်ပေးပြီး အဲ့ဒီ folder ထဲမှာ rain.html ဆိုပြီး file တစ်ခုလုပ်ပေးပါ။
အခု controllers ထဲက Rain.php ကိုဖွင့်ပြီး ဒီလိုမျိုးရေးပါမယ်။
<?php
class Rain_Controller extends Controller{
function index(){
$this->load_model("rain","rain_m");
$content_row = $this->rain_m->get();
// Load view
$tpl = new View;
$tpl->assign( $content_row );
$tpl->draw('rain/rain');
}
}
>
နောက်တစ်ခါ models ထဲက Rain.php ကိုဖွင့်ပြီး ဒီလိုရေးပါမယ်။
<?php
class Rain_Model extends Model{
function get() {
return array('title' => 'This is titel', 'header' =>'Rain PHP Framework!', 'content' => 'Hey! This is my first start of rain fframework');
}
}
?>
နောက်တစ်ခါ views/rain/rain.html ကိုဖွင့်ပြီး ရေးပါမယ်။
<div class="content" style="width:960px; margin: 0 auto;">
<h1>{$title}</h1>
<h3>{$header}</h3>
<p>{$content}</p>
</div>
ပြီးရင် Browser မှာ http://localhost/rain/index.php/rain/ လို့ခေါ်ပြီး run လိုက်ပါ။
အရင်ဆုံး အနေနဲ့ controllers ထဲက Rain.php ကို အရင်ရှင်းပြပါမယ်။
class Rain_Controller extends Controller ဆိုပြီးတော့ framework ရဲ့ Controller Class ကို extends လုပ်ပြီးတော့ရေးပါတယ်။ Controller file ဖြစ်တဲ့ အတွက် file-name ရဲ့နောက်မှာ _Controller လို့ခံပြီး ရေးပေးရပါတယ်။ Browser မှာခေါ်လိုက်တဲ့ link မှာ index.php ရဲ့နောက်မှာ ရေးထားတဲ့ rain ဆိုတာက ဒီ controller ရဲ့ name ပဲဖြစ်ပါတယ်။ ဒီ Framework ရဲ့ URL structure က example.com/index.php/Controller/Action/Parameters/ ဒီလိုမျိုးပါ။ Controller နောက်က Action ဆိုတာကတော့ Controller file ထဲက Function @ Method name ပဲဖြစ်ပါတယ်။ Action ကိုမညွှန်းထားရင်တော့ Controller ထဲက index ဆိုတဲ့ Function @ Method ကို ခေါ်ပေးမှာပဲ ဖြစ်ပါတယ်။
Rain Controller ထဲက index ဆိုတဲ့ function ထဲမှာ ရေးထားတဲ့
$this->load_model("rain","rain_m");
ဆိုတာကတော့ Rain.php ဆိုတဲ့ Model file ကို load လုပ်လိုက်တာပါပဲ။ ဒီနေရာမှာ rain_m ဆိုတာကကောလို့ မေးစရာရှိပါတယ်။ rain_m ဆိုတာကတော့ ဒီ Controller file ထဲမှာ ပြန်သုံးတဲ့ အခါ ရေးမယ့် နာမည်ပဲ ဖြစ်ပါတယ်။ နောက်တစ်ကြောင်းကို ဆက်ကြည့်လိုက်ရင် ရှင်းသွားမှာပါ။
$content_row = $this->rain_m->get();
ဒီတစ်ကြောင်းကို ကြည့်လိုက်ရင် ခုဏက rain ဆိုတဲ့ Model File ကို နာမည် အစားထိုးခဲ့တဲ့ rain_m ဆိုတာကို ပြန်သုံးထားပါတယ်။ ရှင်းရှင်းလင်းလင်းပြောရရင် Models Folder ထဲက Rain.php ဆိုတဲ့ Model file ထဲက get ဆိုတဲ့ function ကို လှမ်းခေါ်လိုက်တာပါပဲ။ get ဆိုတဲ့ function က return ပြန်လာတဲ့ value ကို $content_row ဆိုတာထဲကိုထည့်လိုက်တာပါ။
ကျန်တဲ့ ၃ကြောင်းကတော့ $tpl ဆိုပြီးတော့ View ဆိုတဲ့ Class ကို object တစ်ခုဆောက်လိုက်ပါတယ်။ နောက်တစ်ခါ $tpl ထဲကို ခုနက $content_row ကို assing လုပ်လိုက်တာပါ။ နောက်ပြီးတော့ Views Folder ထဲက rain/rain.html ကို draw လုပ်လိုက်ပါတယ်။ လွယ်လွယ်ပြောရရင် rain.html file ထဲကို $content_row ဆိုတဲ့ data passing ပေးပြီး output render လုပ်ပေးလိုက်တာပါ။
PHP Template Engine သုံးတဲ့ သူတွေအတွက်ကတော့ ဒီလိုပုံစံတွေနဲ့ ရင်းနှီးနေမှာပါ။
ဒီ framework မှာ သုံးထားတာကတော့ rain_template engine ပဲဖြစ်ပါတယ်။ ဒီ framework ကိုရေးတဲ့ team ကပဲ ရေးထားတဲ့ PHP Template Engine ဖြစ်ပါတယ်။
ဒါကြောင့်မို့လို့ view file ကို HTML extension နဲ့ သိမ်းလို့ရတာပါ။ မဟုတ်ရင် PHP extension နဲ့ပဲ အသုံးပြုရမှာပါ။
HTML file ထဲမှာမှ {…} ဒီလိုမျိုး တွန့်ကွင်းထဲ ထည့်ရေးပေးခဲ့တာ ဖြစ်ပါတယ်။
Model ကနေပြန်လာတဲ့ $content_row ဆိုတဲ့ အထဲမှာက title, header, content ဆိုတဲ့ key name နဲ့ array value တွေရှိပါတယ်။ ဒါကြောင့်မို့လို့ Views ထဲက rain.html ဆိုတဲ့ file ထဲမှာ {$title} , {$header} , {$content} ဆိုပြီးတော့ တန်ဖိုးတွေ ပြန်ရိုက်ထုတ်ပေးထားတာ ဖြစ်ပါတယ်။
Model ကနေပြန်လာတဲ့ $content_row ဆိုတဲ့ အထဲမှာက title, header, content ဆိုတဲ့ key name နဲ့ array value တွေရှိပါတယ်။ ဒါကြောင့်မို့လို့ Views ထဲက rain.html ဆိုတဲ့ file ထဲမှာ {$title} , {$header} , {$content} ဆိုပြီးတော့ တန်ဖိုးတွေ ပြန်ရိုက်ထုတ်ပေးထားတာ ဖြစ်ပါတယ်။
အသေးစိတ်ကိုတော့ rain_tpl documentation မှာကြည့်နိုင်ပါတယ်။
Facebook comments:








ှုွံှုငါ့ဟာ လောက်တောင် သုံးရမလွယ်လိုက်တာ
hmm then let me see yours or example of it
ဟာ ဟုတ်သဟ
ခင်ဗျားဟာကြီးက လွယ်လှချည်လား။
နာမည်က လွယ်လွယ်ကြီး Framework ထင်တယ်။