PHP OOP তে trait কি?
সাধারণত PHP কে বলা হয় Single Inheritance Language অর্থাৎ, PHP Language টি Multiple Inheritance সাপোর্ট করেনা। আর Trait হচ্ছে PHP OOP তে Single Inheritance এর সীমাবদ্ধতা দূর করার এবং Multiple Inheritance ব্যবহার করার একটি নতুন concept . যা PHP 5.4 এ প্রথম ব্যবহার করা হয়। Trait অনেকটা class এর মতোই, Trait কে Define করা হয় ক্লাসের মত করেই trait কিওয়ার্ডটি ব্যবহার করে। তবে এর থেকে class এর মত object তৈরী করা যায়না। কিন্তু একাধিক trait এর property এবং Method গুলোকে একটি single class এর মধ্যে ব্যবহার করা যায়। এবার চলুন একটা উদাহরণের মাধ্যমে আরো ভালো ভাবে বুঝা যাক :
File Name: foo.php
1
2
3
4
5
6
7
8
9
10
11
| <?phptrait Foo { public function sayHello(){ return "Hello"; } public function sayWorld(){ return "World"; } }?> |
use কীওয়ার্ড ব্যবহার করে Trait কে ক্লাসে ব্যবহার করা হয়। চলুন trait ব্যবহার করে একটা উদাহরণ দেখা যাক :
File Name: bar.php
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?phpinclude("foo.php");class Bar{ // Using the Trait Here use Foo;} $obj = new Bar; // Executing the method from trait $obj->sayHello(); //Hello $obj->sayWorld(); // World?> |
ব্যাখ্যা: লক্ষ্য করুন foo নামক trait কে use keyword দিয়ে bar class এর মধ্যে ব্যবহার করি, আর এতে আমরা bar এর object দিয়ে খুব সহজে foo trait এর method এবং property গুলো ব্যবহারের সুযোগ পাই।
traits এবং class এর মধ্যে কার Precedence বা অগ্রাধিকার আগে?
কাজ করার ক্ষেত্রে অনেক সময় দেখা যায়, একই নামের function একই সাথে trait, parent class এবং child class এ পাওয়া যায়, তখন প্রথমে child class এর Method পাবে, তারপর trait এর মধ্যে method টি পাবে, তারপর parent class এর method টি পাবে।
চলুন একটা উদাহরণের মাধ্যমে দেখা যাক :
চলুন একটা উদাহরণের মাধ্যমে দেখা যাক :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| <?php class Base{ public function sayHello(){ echo "say hello from base"; }}trait trt{ public function sayHello(){ echo "say hellow from trait"; }}class Child extends Base{ use trt; public function sayHello(){ echo "hello from child class"; }}$objCls = new Child;$objCls->sayHello();?> |
Result
hello from child class
এখন যদি আপনি child class এর sayHello() Method টি off অর্থাৎ comment দিয়ে hide করে রাখেন, তাহলে trt trait এর sayHello() Method execute হবে। চলুন একটা উদাহরণের মাধ্যমে দেখা যাক :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| <?php class Base{ public function sayHello(){ echo "say hello from base"; }}trait trt{ public function sayHello(){ echo "say hellow from trait"; }}class Child extends Base{ use trt; /* public function sayHello(){ echo "hello from child class"; }*/}$objCls = new Child;$objCls->sayHello();?> |
Result:
say hellow from trait

No comments:
Post a Comment