Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
🔴 Advanced  ·  Lesson 25

Magic Methods

Magic methods क्या हैं

Magic methods ख़ास methods हैं जिनके नाम दो underscores से शुरू होते हैं, जैसे __construct या __toString। इन्हें आप कभी नाम से call नहीं करते — PHP इन्हें सही पल पर अपने-आप call करती है, जैसे जब object बने, पढ़ा जाए, या print हो। ये class को इन events से जुड़ने देते हैं।

💡 double underscore __ एक method को magic के रूप में चिह्नित करता है — PHP द्वारा auto-called, आपके द्वारा नहीं।

__construct और __destruct

__construct object बनने पर चलता है; __destruct उसके नष्ट होने पर।

<?php
  class User {
      public function __construct() {
          echo "Object created\n";
      }
      public function __destruct() {
          echo "Object destroyed";
      }
  }
  $u = new User();
?>
Object created
Object destroyed

__construct अब तक सबसे ज़्यादा इस्तेमाल होने वाला magic method है — यह नए objects set करता है। __destruct cleanup के समय चलता है, resources बंद करने को उपयोगी।

__get और __set

ये तब चलते हैं जब आप ऐसी property access करें जो सीधे उपलब्ध नहीं।

<?php
  class Box {
      private $data = [];
      public function __set($name, $value) { $this->data[$name] = $value; }
      public function __get($name) { return $this->data[$name] ?? null; }
  }
  $b = new Box();
  $b->color = "red";     // __set call करता है
  echo $b->color;        // __get call करता है
?>
red

भले color declared property नहीं, __set और __get access को intercept करते हैं, class को उसे manage करने देकर — validation या data लचीले ढंग से रखने के लिए बढ़िया।

__call

__call तब चलता है जब आप ऐसा method call करें जो मौजूद नहीं।

<?php
  class Api {
      public function __call($name, $args) {
          return "You called $name";
      }
  }
  $a = new Api();
  echo $a->anything();
?>
You called anything

Error के बजाय, __call missing method पकड़ता है — लचीले APIs बनाने या calls कहीं और forward करने को काम का।

__toString

__toString तय करता है object text की तरह इस्तेमाल होने पर कैसा दिखे।

<?php
  class Money {
      public $amount = 100;
      public function __toString() {
          return "Rs " . $this->amount;
      }
  }
  echo new Money();
?>
Rs 100

__toString बिना object echo करना error देता है। इसके साथ, आप string रूप control करते हैं — उन objects के लिए बढ़िया जिनका स्वाभाविक text रूप हो।

आम गलतियाँ

  • Magic methods सीधे call करना। आप शायद ही $obj->__construct() लिखें — PHP इन्हें आपके लिए call करती है।
  • __toString string return करता है यह भूलना। इसे text return करना चाहिए, echo नहीं।
  • __get/__set का ज़्यादा इस्तेमाल। ये bugs छिपा सकते हैं; जब हो सके असली properties declare कीजिए।
  • दो की जगह एक underscore। Magic methods को double underscore __ चाहिए।

सारांश

  • Magic methods __ से शुरू होते हैं और PHP द्वारा अपने-आप call होते हैं।
  • __construct/__destruct object बनने और cleanup पर चलते हैं।
  • __get/__set property access intercept करते हैं।
  • __call missing methods की calls पकड़ता है।
  • __toString echo के लिए object का text रूप तय करता है।

आगे, classes structure कीजिए PHP OOP से, या code दोबारा इस्तेमाल कीजिए PHP traits से।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

PHP में magic methods क्या हैं?
Magic methods ख़ास methods हैं जिनके नाम दो underscores से शुरू होते हैं (जैसे __construct)। इन्हें आप सीधे call नहीं करते — PHP इन्हें कुछ ख़ास पलों पर अपने-आप call करती है, जैसे जब object बनता है या string में बदलता है।
__construct क्या करता है?
__construct() उसी पल अपने-आप चलता है जब आप new से object बनाते हैं। यह object की शुरुआती values set करने को इस्तेमाल होता है। यह सबसे ज़्यादा इस्तेमाल होने वाला magic method है।
__get और __set किसलिए हैं?
__get तब चलता है जब आप ऐसी property पढ़ें जो पहुँच योग्य नहीं या मौजूद नहीं, और __set तब जब आप उसमें लिखें। ये class को property access control या intercept करने देते हैं, validation या virtual properties के लिए उपयोगी।
__toString क्या करता है?
__toString() तय करता है कि जब object को string की तरह इस्तेमाल किया जाए तो क्या हो, जैसे echo $obj से। इसके बिना object echo करना error देता है; इसके साथ, आप text रूप तय करते हैं।
इन्हें magic methods क्यों कहते हैं?
क्योंकि ये PHP द्वारा "पर्दे के पीछे" अपने-आप trigger होते हैं, आपके code में नाम से call होने के बजाय। double underscore prefix इन्हें ये ख़ास, auto-invoked methods के रूप में चिह्नित करता है।
← Back to PHP Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicPDO vs MySQLi आपकी प्रगति: 25 / 50 (50%) · Lesson 26 / 50 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें