Monday, July 16, 2012

ReflectionObject

အခုရွင္းမယ္႔ example ေလးကေတာ႔ class const ကို access လုပ္ဖို႔ ReflectionObject ကိုအသံုးျပဳပံုေလးပါ
PHP version 5.2 မတိုင္ခင္အထိေတာ႔ $object::constMember syntax ကို ကၽြန္ေတာ္တို႔အသံုးျပဳလို႔မရခဲ႔ပါဘူး
via class name ကို accessing  လုပ္တာ သို႔  self operator ေတြက  inheritance case ထဲ႔မွာရွိတဲ႔ class ကို မွန္ေအာင္ ေျဖရွင္းမေပးနိုင္ပါဘူး
အဲဒါေတြကို အလုပ္လုပ္ေအာင္ access လုပ္ဖို႔အတြက္ ကၽြန္ေတာ္တို႔က Reflection extension ကို အသံုးျပဳၾကရေအာင္

ေရးထားတာကေတာ႔
<?php
 class Foo {
     const a = 7;
     const x = 99;
 }
 class Bar extends Foo {
     const a = 42;
 }
 $b = new Bar();
 $r = new ReflectionObject($b);
 echo $r->getConstant('a'); 
 echo "<br/>";
 echo $r->getConstant('x'); 
 ?>
Output is
---------------------------
42
99
---------------------------
ရွင္းလင္းခ်က္
line 2  => Foo ဆိုတဲ႔ class တစ္ခုတည္ေဆာက္
line 3  => a ဆိုတဲ႔ const ကို 7 အျဖစ္သတ္မွတ္
line 4  => x ဆိုတဲ႔ const ကို 99 အျဖစ္သတ္မွတ္
line 6  => Foo ဆိုတဲ႔ base class ကိုအေျခခံျပီး Bar ဆိုတဲ႔ class အသစ္တစ္ခုထပ္ေဆာက္
line 7  => base  class ထဲမွာရွိတဲ႔ a တန္ဖိုး 7 ကို 42 နဲ႔ overwrite လုပ္ ျပီး assign လုပ္လိုက္ပါတယ္
line 9  => $b ဆိုတဲ႔ variable တစ္ခုေဆာက္ျပီး  Bar ဆိုတဲ႔ class ကို new keyword သံုးျပီး object တစ္ခု ဖန္တီးလိုက္ပါတယ္ 
line10 => $r ဆိုတဲ႔ var တစ္ခုထပ္ေဆာက္ျပီး $b variable ကို ReflectionObject သံုးျပီး object ေနာက္တစ္ခုကို new keyword နဲ႔ဖန္တီးပါတယ္
line11 => PHP ရဲ႕ getConstant ကိုသံုးျပီး  ကၽြန္ေတာ္တို႔ေဆာက္ခဲ႔တဲ႔ $r ဆိုတဲ႔ object ထဲ႔က a တန္ဖိုးကို echo သံုးျပီး output ထုတ္ေပးမွာပါ
line13 =>  line 11 နဲ႔ တူတူပါပဲ႔ သူကေတာ႔ $r object ထဲက x တန္ဖိုးကို getConstant သံုးျပီး output ထုတ္ျပသြားတာပါပဲ႔

အဆင္ေျပပါေစဗ်ာ ဥာဏ္ရွိသလိုသံုးနိုင္ပါတယ္
အမွားပါရင္လည္း ၀င္ေရာက္ေထာက္ျပေဆြးေႏြးေပးပါလို႔ ...
Thanks for Reading to my Reader...

No comments:

Post a Comment

Thanks for your comments
Welcome from cyberoot