Using traits in PHP In Hindi
पीएचपी प्रोग्रामिंग में ट्रेट पीएचपी जैसी सिंगल इनहेरिटेंस सपोर्टेड प्रोग्रामिंग लैंग्वेज में प्रोग्राम सोर्स कोड को री-यूज़ का एक बेस्ट मैकेनिज्म या प्रोसेस हैं। पीएचपी क्लास प्रोग्राम में एक ट्रेट फीचर्स प्रोग्रामर को पर्टिकुलर क्लास मेथड्स को डिफाइन या क्रिएट करने की परमिशन प्रोवाइड करता है, जिसे प्रोग्रामर कई पीएचपी क्लासेस यूज़ कर सकता है. जो की क्लास में बिना क्लासेज को इनहेरिटेंस के माध्यम से रिलेट किए गए है।

कई बार प्रोग्रामर मल्टीप्ल क्लासेज में क्लास कैपेबिलिटी को शेयर करना चाहते हैं, तो उस प्रोग्राम में ट्रेट कांसेप्ट का यूज़ प्रोग्राम में सोर्स कोड रेपीटशन को अवॉइड करने में किया जाता है।
What is a trait in PHP programming?
पीएचपी प्रोग्राम में ट्रेट एक यूजर डिफाइन क्लास के जैसे बिहेव करती है, जहा इसे क्लास में इंस्टैंशिएट करने के बदले ट्रेट का यूज़ मौजूदा क्लास कैपेबिलिटी में ऐड करने में किया जाता है। क्लासेस में ट्रेट प्रोग्रामर को उन मेथड्स को डिफाइन करने की परमिशन प्रोवाइड करती हैं, जिनको प्रोग्रामर मल्टीप्ल क्लासेज में ऐड कर सकता है. जिससे की प्रोग्राम सोर्स कोड का री-यूज़ पॉसिबल हो जाता है।
Key features of traits in the PHP language.
- याद रहे क्लास में ट्रेट को सेल्फ इंस्टैंशिएट नहीं किया जा सकता है।
- ट्रेट पॉपर्टीज़ में नहीं हो सकते, जबकि उनमें क्लास मेथड्स में हो सकते हैं।
- पीएचपी में ट्रेट मेथड्स को कई क्लासेज में कैपेबिलिटी को शेयर करने की परमिशन प्रोवाइड करती हैं।
- पीएचपी ट्रेट में एक क्लास मल्टीप्ल क्लास ट्रेट को यूज़ कर सकता है।
- याद रहे, पीएचपी प्रोग्रामिंग मल्टीप्ल इनहेरिटेंस की परमिशन प्रोवाइड नहीं करता है, मतलब, एक यूजर डिफाइन क्लास एक से अधिक क्लासेज से इनहेरिट में नहीं ले सकता है. जबकि ट्रेट के साथ, एक क्लास में कई ट्रेट ग्रुप हो सकती हैं।
Defining and Using a Trait in PHP.
Syntax for defining a trait in PHP.
trait TraitName {
// create a Method(s) to be shared in class
public function methodName() {
echo “display the Method create for trait \n”;
}
}
How to Using a Trait in a php Class.
class ClassName {
use TraitName; // here we can add trait in the class
// add number of Other class methods and class properties
Example of using a trait in a PHP program.
Step 1: First define the trait in the class.
<?php
// here we Define or create a trait with some class methods
trait systemLogg {
public function log($display_info) {
echo “Display Logg info – ” . $display_info . “\n”;
public function info($display_info) {
echo “Display System Info – ” . $display_info . “\n”;
}
}
?>
Step 2: Use the trait in a user-created class.
<?php
// Define or create a class that uses the systemlog trait
class systemapps {
use systemlog; // here it add the systemlog trait
public function run() {
$this->log(“System apps still running.”);
$this->info(“System app is workable”);
}
}
// here we Create an object of the systemapps user created class
$sysapp = new systemapps();
$sysapp->run();
?>
Explanation of using a trait.
- इस प्रोग्राम में systemLogg ट्रेट दो मेथड को क्रिएट या डिफाइन करती है, जिसमे log() और systeminfo() मेथड है।
- यहाँ systemapps क्लास use systemLogg; स्टेटमेंट के साथ systemLogg ट्रेट को यूज़ करती है।
- systemapps क्लास में run() मेथड log() और info() दोनों फंक्शन को कॉल करती है, जो की systemLogg ट्रेट मेथड हैं।
Using multiple traits in a class in PHP.
पीएचपी प्रोग्राम में यूजर क्रिएटेड कस्टम क्लास मल्टीप्ल ट्रेट को यूज़ कर सकती है, और पीएचपी फीचर्स उन सभी ट्रेट से सभी क्लास मेथड को क्लास में ग्रुप या मर्ज कर देगा। यह फीचर्स तब हेल्पफुल हो सकता है, जब प्रोग्रामर इंडिविजुअल क्लास में कई तरह की क्लास कैपेबिलिटी का दोबारा यूज़ करना हो।
Example of using multiple traits in a PHP program.
<?php
// here we create or Define the first systemlogg class trait
trait systemLogg {
public function log($display_info) {
echo “System Log info ” . $display_info . “\n”;
}
}
// here we create or Define the second indicator class trait
trait indicator {
public function indicate($display_info) {
echo “System Notify info ” . $display_info . “\n”;
}
}
// here we Define a class using both class traits
class client {
use systemLogg, indicator; // here we Use both systemLogg and indicator class traits
public function generateAction() {
$this->log(“client generated task.”);
$this->indicate(“You get new info.”);
}
}
// here we Create an object of the client class
$client = new client();
$client->generateAction();
?>
Explanation of using multiple traits.
- यहाँ इस प्रोग्राम में क्लाइंट क्लास systemLogg और indicator दोनों क्लास ट्रेट को यूज़ करता है।
- वही प्रोग्राम में generateAction() मेथड दोनों क्लास ट्रेट से क्लास मेथड को कॉल करती है. systemLogg से log() और indicator से indicate() फंक्शन क्लास मेथड को यूज़ करता है।
Method conflicts between trait in PHP programming.
यदि किसी पीएचपी प्रोग्राम में मल्टीप्ल ट्रेट एक ही नाम वाली क्लास मेथड प्रोवाइड की जाती हैं, तो पीएचपी प्रोग्राम में एक एरर जनरेट होगा क्योंकि इस कंडीशन में पीएचपी को पता नहीं है कि किस क्लास ट्रेट मेथड का यूज़ करना है। इस कंडीशन को सॉल्व करने के लिए प्रोग्रामर मेथड का अलाएसेस या मेथड मेथड प्रायोरिटी को यूज़ कर सकते हैं।
Resolving trait method conflicts in PHP using insteadof and as.
- insteadof – यदि किसी प्रोग्राम में दो ट्रेट में बराबर नाम वाली क्लास मेथड हैं, तो प्रोग्रामर यह क्लास में इंडीकेट करने की परमिशन प्रोवाइड करता है कि किस क्लास मेथड को यूज़ करना है।
- as – यह प्रोग्रामर को किसी क्लास ट्रेट से किसी क्लास मेथड को अलग नाम देने की परमिशन को प्रोवाइड करता है, जिससे की प्रोग्रामर क्लास में एक अलग नाम का यूज़ कर सकें।
Example of resolving method conflicts in a PHP program.
<?php
// here we Define or create the first class trait with a method
trait systemLogg {
public function log() {
echo “Display The Logg message from systemLogg trait \n”;
}
}
// Define the second trait with a method of the same name
trait indicator {
public function log() {
echo “Display the Logg message from indicator trait \n”;
}
}
// here we Define a class using both class traits and resolving the class conflict
class systemapps {
use systemLogg, indicator {
// here it Use systemLogg’s log method instead of indicator’s
systemLogg::log insteadof indicator;
// here Alias indicator’s log method as logindicator
indicator::log as logindicator;
}
public function run() {
$this->log(); // here it Calls Logger’s log
$this->logindicator(); // here it Calls indicator’s log
}
}
// here we can Create an object of the systemapps class
$sysapp = new systemapps();
$sysapp->run();
?>
Explanation of resolving method conflicts.
- systemapps क्लास, systemLogg और indicator दोनों क्लास ट्रेट का यूज़ करता है, जिनमें से प्रत्येक में एक log() मेथड होती है।
- प्रोग्राम में insteadof कीवर्ड का यूज़ यह इंडीकेट करने में किया जाता है कि systemLogg ट्रेट से log() मेथड का यूज़ किया जाना चाहिए, indicator से नहीं।
- as कीवर्ड, log() मेथड को indicator ट्रेट से logindicator() में बदल देता है, इसलिए प्रोग्रामर इसे अभी भी कॉल कर सकते हैं।
Attributes in PHP Programming Traits.
पीएचपी प्रोग्राम में ट्रेट में भी क्लास प्रॉपर्टीज हो सकते हैं, यहाँ प्रोग्रामर को इन्हे स्टैटिक या प्राइवेट डिक्लेअर किया जाना चाहिए, जिससे की प्रोग्रामर किसी क्लास ट्रेट को सेल्फ इंस्टैंसिएट नहीं कर सकते है।
Example of trait properties in a PHP program.
<?php
// here we Define or create a trait with a systemlogg property
trait systemLogg {
private $loginfo = “this is a system log message”;
public function dispLogMessage($sysmessage) {
$this->loginfo = $sysmessage;
}
public function showLogMessage() {
return $this->loginfo;
}
}
// Define a class using the systemLogg trait
class systemapps {
use systemLogg;
public function displayLog() {
echo $this->showLogMessage() . “\n”;
}
}
// here we Create an object of the systemapps class
$sysapp = new systemapps();
$sysapp->dispLogMessage(“fresh system log generated message”);
$sysapp->displayLog(); // Result – fresh system log generated message
?>
Explanation of Attributes in PHP Programming Traits.
- इस प्रोग्राम में systemLogg क्लास ट्रेट में एक प्राइवेट पॉपर्टीज़ $logMessage और प्रॉपर्टीज में मेन्युप्लेट करने के लिए dispLogMessage() और showLogMessage() जनरेटेड क्लासेज मेथड होती हैं।
- systemapps क्लास systemLogg क्लास ट्रेट को यूज़ करता है, और क्लास ऐट्रिब्यूट्स से प्रॉपर्टीज और क्लास मेथड को एक्सेस कर सकता है।
Advantages of using traits in PHP programming.
- Code reusability – क्लास में ट्रेट प्रोग्रामर को इनहेरिटेंस का यूज़ किए बिना कई क्लासेज में प्रोग्राम सोर्स कोड को रीयूज़ करने की परमिशन प्रोवाइड करती हैं।
- Separation of concerns – क्लास ट्रेट प्रोग्राम सोर्स कोड को अलग-अलग फंक्शन ब्लॉक में अरेंज करने में हेल्प करती हैं, जिससे की क्लास प्रोग्राम अधिक मॉड्यूलर और मेंटेनेंस में इजी हो जाता है।
- Avoiding inheritance problems – क्लास ट्रेट में प्रोग्रामर इनहेरिटेंस और क्लास पदानुक्रम रिलेटेड इश्यूज को अवॉयड किए बिना कई क्लासेज में कैपेबिलिटी को यूज़ कर सकते हैं।
A summary of trait attributes in PHP programming.
- किसी भी पीएचपी क्लास में ट्रेट प्रोग्राम को इनहेरिटेंस का यूज़ किए बिना कई क्लासेज में प्रोग्राम सोर्स कोड का रीयूज़ करने की परमिशन प्रोवाइड करती हैं।
- किसी क्लास ट्रेट में मेथड्स और क्लास प्रॉपर्टीज होती हैं, जिनको use कीवर्ड का यूज़ करके मल्टीप्ल क्लासेज के बीच शेयर किया जा सकता है।
- एक क्लास में मल्टीप्ल ट्रेट का यूज़ हो सकता है, और डिक्लेअर मल्टीप्ल क्लास मेथड नामों में टकराव को insteadof और as कीवर्ड मेथड का यूज़ करके डील किया जा सकता है।
- क्लास में ट्रेट स्पेशली आर्डर में कुछ पर्टिकुलर कंडीशन में यूज़फुल होती हैं, जहाँ प्रोग्राम में मल्टीप्ल क्लासेज को इक्वल कैपेबिलिटी शेयर करने की जरूरत होती है, जहा जरूरत के अनुसार एक ही क्लास पदानुक्रम से रिलेटेड नहीं होते हैं।

