PHP with OOP
PHP 5.2
version မွာေတာ့ OOP ကုိ အေထာက္အပံ့ေပးႏိုင္လာတာေတြ႕ရပါတယ္။
PHP 5.3 ကုိေရာက္တဲ့အခ်ိန္မွာေတာ့
Fully OOP အျဖစ္ေျပာင္းလဲ လာခဲ့ပါေတာ့တယ္ ။ ဒီအခ်ိန္မွာ PHP
ကုိမူလအတိုင္း Procedural ေရးႏိုင္သလို OOP အေနနဲ႕လည္းေရးလို႕ရလာပါတယ္
။
Framework ေတြ IDE ေတြ အသံုးျပဳမယ္ဆိုရင္ေတာ့
OOP ကုိမသံုးမျဖစ္သံုးရေတာ့မွာျဖစ္ပါတယ္ ။
အေၾကာင္းကေတာ့ Framework မွာနဂိုကေရးၿပီးသားပါလာတဲ့
Class ကုိ inheritanceလုပ္သံုးတာ
တို႕
Overwrite လုပ္တာတို႕နဲ႕ Customize ျပန္လည္ဖန္တီးရတာေၾကာင့္ပဲျဖစ္ပါတယ္
။
Declaring a Class
အေျခခံ
Class ေၾကျငာတဲ့ပံုစံကေတာ့ ရိုးရိုးေလးပါပဲ ။
class
myclass{
// Class
contents go here
}
myclass ဆိုတဲ့နာမည္နဲ႕ class တစ္ခု ကုိဖန္တီးလိုက္တယ္ scope{} ႏွစ္ခုၾကားမွာေတာ့ constants,
variables
and functions ေတြ(methods ေတြ)ပါ၀င္ႏိုင္ပါတယ္ ။
Instantiating an Object
Class တစ္ခုဖန္တီးၿပီးရင္ဒီတိုင္းသံံုးလို႕မရပါဘူး
။ သူ႕ကုိ Instantiate (Obj ေဆာက္) ၿပီးမွသံုးလို႕ရပါတယ္။
C# တို႕
Java တို႕သင္ဖူးတဲ့သူဆို ပိုနားလည္လြယ္ပါလိမ့္မယ္။Obj ေဆာက္ဖို႕အတြက္ new ဆိုတဲ့
keyword
ေလးကုိသံုးပါတယ္။ဒီေနရာမွာ
Obj ဟာ Reference type ဆိုတာ သိဖို႕လိုပါမယ္ ။ ဥပမာ
$myClassInstance
= new myClass();
$copyInstance
= $myClassInstance(); ဒီလိုေရးခဲ့မယ္ဆိုရင္ $myClassInstance နဲ႔ $copyInstance
တို႕ဟာ
Object တစ္ခုတည္းကုိ Reference လုပ္သံုးေနတယ္ဆိုၿပီး သတ္မွတ္ရမွာျဖစ္ပါတယ္။
တကယ္လို႕
$myClassInstance = new myClass();
$myClassInstance2 = new myClass();ဒီလိုေရးခဲ့မယ္ဆိုရင္ေတာ့ $myClassInstance နဲ႕ $myClassInstance2
တို႕ဟာ Class တစ္ခုတည္းေပမယ့္ Object ႏွစ္ခုျဖစ္သြားၿပီလို႕ သိရမွာျဖစ္ပါတယ္။
Class Inheritance
Class တစ္ခုကုိ
အျခား Class တစ္ခုကေန extends လုပ္ၿပီးယူသံဳးတာမ်ိဳးကုိ Class inheritance လုပ္တယ္
လို႕ေခၚပါတယ္။လြယ္လြယ္ေျပာရရင္
အေဖပိုင္တဲ့ပစၥည္းကုိသားကယူသံုးတာ မ်ိဳးလို႕ မွတ္ထားလိုက္ပါ။
class a
{
function
test()
{
echo
"a::test called";
}
function
func()
{
echo
"a::func called";
}
}
class b
extends a {
function
test()
{
echo
"b::test called";
}
}
class c
extends b {
function
test()
{
parent::test();
}
}
class d
extends c {
function
test()
{
b::test();
}
}
$a = new
a();
$b = new
b();
$c = new
c();
$d = new
d();
$a->test();
// Outputs "a::test called"
$b->test();
// Outputs "b::test called"
$b->func();
// Outputs "a::func called"
$c->test();
// Outputs "b::test called"
$d->test();
// Outputs "b::test called"
ဒါေလးကလြယ္ေအာင္ျပထားတာပါ
။ class a မွာ test() ရယ္ func() ရယ္ function ႏွစ္ခုပါပါတယ္။
Class b က်ေတာ့
a ကုိ extends ယူလိုက္တယ္ ။ ဒီေတာ့ a ထဲက function ကုိ္သူယူသံုးလို႕ရသြားတယ္။
အဲဒီက
test() ကုိ ျပန္ျပင္ၿပီးသံုးလိုက္တယ္ ။ ေနာက္ထပ္ class ေတြထပ္ၿပီး extends လုပ္သံုးတယ္။
$a->
test() ဆိုတာက $a ထဲက test() ဆိုတဲ့ function(method လို႕လည္းေခၚ) ကုိအလုပ္လုပ္ခိုင္း
မယ္လို႕ဆိုလိုတာပါ။
$a ဆိုတာက class a ကုိ object ေဆာက္လိုက္ၿပီးေနာက္ေခၚတဲ့နာမည္ပါ။
-> ဆိုတဲ့ျမားေလးက " of " ဆိုတဲ့သေဘာမ်ိဳးေဖာ္ေဆာင္ေပးပါတယ္ ။
ဒီေန၇ာမွာ
မွတ္ထားရမယ့္ keyword ေလးက extends ရယ္ Parent ဆိုတာေလးရယ္မွတ္ထားလိုက္ပါ။
ပင္မ
Class ကုိ Parent Class , extends လုပ္သံုးတဲ့ Class ကိုေတာ့ Child Class ရယ္လို႕လည္းေခၚၾက
ပါတယ္။
ေနာက္တစ္ခုကုိထပ္ၾကည္႕ရေအာင္
။ပထမတစ္ခုသိထားမယ္ဆိုရင္ဒါဆုိရင္ေတာ့ေတာ္ေတာ္ေလးနားလည္
သြားလိမ့္မယ္လို႕ေမွ်ာ္လင့္ပါတယ္
။အဲဒီမွာက Car ဆိုတဲ့ Class တစ္ခုဖန္တီးပါတယ္။ Class ထဲမွာ Variable
ေၾကျငာခ်င္ရင္
var ဆိုတဲ့ Keywordေလးသံုးရပါတယ္ ။
<?php
Class
Car{
var
$wheels=4;
var
$doors=4;
Function
wheelsdoors(){
Return
($this -> wheels + $this-> doors);
}
}
Class
CompactCar extends car{
var
$doors=2;
}
$car1=new
Car();
$car2=new
CompactCar();
echo
$car1-> wheels
."<br/>";
echo
$car1-> doors
."<br/>";
echo
$car1-> wheelsdoors() .
"<br/>";
echo
"<br/>";
echo
$car2-> wheels
."<br/>";
echo
$car2-> doors
."<br/>";
echo
$car2-> wheelsdoors() .
"<br/>";
echo
"<br/>";
?>
ကုိယ့္ဖာသာကုိယ္စဥ္းစားၾကည့္
Browser မွာ Output ဘာျပမယ္ထင္သလဲ ?
ၿပီးမွ
လက္ေတြ႕ Run ၾကည့္ပါ ။OK :)
No comments:
Post a Comment