Wednesday, July 11, 2012

base class ထဲမွာ const ကိုေၾကျငာျခင္း

ေစာေစာကေရးခဲ႔တဲ႔ tut ထဲမွာေတာ႔ constant ကို class ထဲမွာေရးခဲ႔နည္းေလးေတြပါ
အခုေတာ႔ အဲဒီ constant နဲ႔ပတ္သက္ျပီး base class ထဲမွာ constant ေရးနည္းနဲ႔ child ထဲမွာ override လုပ္နည္းေတြႏွင္႔
get_called_class ဆိုတဲ႔ method ကိုသံုးျပီး static method ကေန const  ကေန မွန္ကန္တဲ႔ တန္ဖိုးကို access လုပ္ၾကည္႔ရေအာင္

<?php
abstract class Object_db
{
    const TableName='undefined';
    public static function GetClass()
    {
    $call=get_called_class();
    return "SELECT * FROM '" . $call::TableName . " ' " ;
    }
}
class PersonTable extends Object_db
{
    const TableName="persons';
}
class AdminTable extends PersonTable
{
    const TableName='admins';
}
echo PersonTable::GetClass() . "<br/>";
echo AdminTable::GetClass() . "<br/>";
?>

The Output is
SELECT * FROM 'persons';
SELECT * FROM 'admins';

ရွင္းလင္းခ်က္
line 2  =>Object_db ဆိုတဲ႔ class တစ္ခုတည္ေဆာက္
line 4  =>TableName ကို const အျဖစ္သတ္မွတ္
line 5  =>GetClass ဆိုျပီး function တစ္ခုတည္ေဆာက္
line 7  =>Class ကိုျပန္ေခၚသံုးဖို႔ get_called_class() method ကိုသံုးျပီး $call ဆိုတဲ႔ variable ထဲကိုထည္႔
line 8  => Class ထဲမွာ ရွိတဲ႔ TableName ကို SQL statement သံုးျပီး return ျပန္ေပးမွာပါ
line 11=> မူရင္း Base Class ကိုညႊန္းျပီး PersonTable ဆိုတဲ႔ Class ကိုထပ္ျပီးတည္ေဆာက္တာပါ
line 12=> persons ကို TableName  ဆိုျပီး const အျဖစ္သတ္မွတ္ပါတယ္
line 15=>PersonTable ထဲ႔က မူရင္း Base Class ကိုထပ္ညႊန္းျပီး AdminTable ဆိုတဲ႔ Class ကိုထပ္ျပီးတည္ေဆာက္တာပါ
line 17=>admins ဆိုျပီး TableName  ကို const အျဖစ္သတ္မွတ္ပါတယ္
line 19=>base class ျဖစ္တဲ႔ Object_db ထဲ႕က GetClass function သံုးျပီး (child class )PersonTable ကို SQL Statement နဲ႔ return ျပန္ျပီး output ထုတ္ေပးမွာပါ
line 20=> 19 နဲ႔ တူတူပါပဲ႔ class name ပဲ႔ေျပာင္းသြားတာပါ

ဒီလိုမ်ိဳး php class ေတြသံုးျပီး sql statement တစ္ေၾကာင္းေရးထားရံုုနဲ႔ အဲဒီ class ကိုျပန္ေခၚသံုးျပီး SQl Query ကိုအလြယ္တစ္ကူျပန္လည္ေခၚသံုးနိုင္ပါတယ္
SQL statement အမ်ားၾကီးေရးသားျခင္းကိုလည္း အဆင္ေျပေစပါတယ္ဗ်ာ
အမွားပါရင္လည္း၀င္ေရာက္ေဆြးေႏြးေပးပါလို႔..

No comments:

Post a Comment

Thanks for your comments
Welcome from cyberoot