PHP Academy · पाठ

मैजिक विधियों का परिचय

__toString, __get, __set और PHP की अन्य मैजिक विधियाँ सीखें

पाठ 4, कुल 4 में से13 चरण

मैजिक विधियों का परिचय, CoddyKit पर PHP Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह PHP Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। PHP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

परिचय: PHP की जादुई विधियाँ

जादुई विधियाँ दो अंडरस्कोर उपसर्ग वाली विशेष PHP विधियाँ हैं, जिन्हें PHP इंजन विशेष परिस्थितियों में अपने-आप चलाता है। इनके माध्यम से आप वस्तु के व्यवहार में जुड़ाव-बिंदु प्राप्त कर सकते हैं।

मुख्य अवधारणाएँ

PHP की जादुई विधियों की मुख्य अवधारणाएँ:

  • __toString() — वस्तु को स्ट्रिंग में बदलना
  • __get/__set/__isset/__unset — गुणों तक पहुँच को रोककर संभालना
  • __call/__callStatic — विधि-कॉल को रोककर संभालना
  • __invoke() — कॉल करने योग्य वस्तु

__toString

उदाहरण:

<?php
class Money {
    public function __construct(
        private float  $amount,
        private string $currency
    ) {}

    public function __toString(): string {
        return number_format($this->amount, 2) . ' ' . $this->currency;
    }
}

$price = new Money(9.99, 'USD');
echo $price;            // 9.99 USD
echo 'Price: ' . $price; // Price: 9.99 USD

__get और __set

आगे:

<?php
class DynamicObject {
    private array $data = [];

    public function __get(string $name): mixed {
        return $this->data[$name] ?? null;
    }

    public function __set(string $name, mixed $value): void {
        $this->data[$name] = $value;
    }
}

$obj = new DynamicObject();
$obj->name = 'Alice';
echo $obj->name;  // Alice

__isset और __unset

अभ्यास:

<?php
class Model {
    private array $attributes = [];

    public function __set(string $k, mixed $v): void { $this->attributes[$k] = $v; }
    public function __get(string $k): mixed { return $this->attributes[$k] ?? null; }
    public function __isset(string $k): bool { return isset($this->attributes[$k]); }
    public function __unset(string $k): void { unset($this->attributes[$k]); }
}

$m = new Model();
$m->email = 'a@b.com';
var_dump(isset($m->email));  // true
unset($m->email);
var_dump(isset($m->email));  // false

__call और __callStatic

अधिक गहराई से:

<?php
class FluentQuery {
    private array $clauses = [];

    public function __call(string $name, array $args): static {
        $this->clauses[$name] = $args[0] ?? null;
        return $this;
    }

    public function toSql(): string {
        return 'SELECT * FROM '
            . ($this->clauses['from'] ?? 'unknown');
    }
}

echo (new FluentQuery())->from('users')->toSql();
// SELECT * FROM users

__invoke

उन्नत उपयोग:

<?php
class Multiplier {
    public function __construct(private float $factor) {}

    public function __invoke(float $value): float {
        return $value * $this->factor;
    }
}

$double = new Multiplier(2);
echo $double(5);   // 10
echo $double(21);  // 42

$funcs = [new Multiplier(2), new Multiplier(3)];
foreach ($funcs as $fn) echo $fn(4) . ' '; // 8 12

__clone

वास्तविक उपयोग का प्रतिरूप:

<?php
class Config {
    private array $data = [];

    public function set(string $k, mixed $v): self {
        $this->data[$k] = $v;
        return $this;
    }

    public function __clone() {
        // deep clone nested objects if needed
    }
}

$original = (new Config())->set('theme', 'dark');
$copy = clone $original;  // triggers __clone

__debugInfo

सर्वोत्तम अभ्यास:

<?php
class ApiClient {
    public function __construct(
        private string $baseUrl,
        private string $apiKey  // sensitive!
    ) {}

    public function __debugInfo(): array {
        return [
            'baseUrl' => $this->baseUrl,
            'apiKey'  => '***' . substr($this->apiKey, -4),  // mask key
        ];
    }
}

var_dump(new ApiClient('https://api.example.com', 'secret123'));
// Shows masked key

व्यावहारिक प्रतिरूप

PHP की जादुई विधियों के व्यावहारिक प्रतिरूप के साथ सभी अवधारणाओं को एक साथ लागू करें।

सामान्य समस्याएँ

PHP की जादुई विधियों के साथ इन सामान्य गलतियों से बचें:

  • वस्तुओं को अर्थपूर्ण ढंग से प्रिंट करने के लिए __toString() का उपयोग करें
  • __get/__set प्रॉक्सी/डेकोरेटर प्रतिरूपों को सक्षम करते हैं
  • __invoke वस्तुओं को कॉल करने योग्य बनाता है (array_map के साथ उपयोगी)
  • __debugInfo संवेदनशील डेटा को var_dump में दिखाई देने से रोकता है

त्वरित जाँच

कौन-सी जादुई विधि PHP की वस्तु को किसी फ़ंक्शन की तरह कॉल करने योग्य बनाती है?

पुनरावलोकन: PHP की जादुई विधियाँ

आपने PHP की जादुई विधियों का अध्ययन कर लिया है। याद रखने योग्य मुख्य बातें:

  • वस्तुओं को अर्थपूर्ण ढंग से प्रिंट करने के लिए __toString() का उपयोग करें
  • __get/__set प्रॉक्सी/डेकोरेटर प्रतिरूपों को सक्षम करते हैं
  • __invoke वस्तुओं को कॉल करने योग्य बनाता है (array_map के साथ उपयोगी)
  • __debugInfo संवेदनशील डेटा को var_dump में दिखाई देने से रोकता है
शुरुआत निःशुल्क

एआई शिक्षक के साथ PHP सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
49
पाठ
195

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

क्या “मैजिक विधियों का परिचय” पाठ निःशुल्क है?

हाँ—“मैजिक विधियों का परिचय” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और PHP Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। PHP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“मैजिक विधियों का परिचय” में मैं क्या सीखूँगा?

__toString, __get, __set और PHP की अन्य मैजिक विधियाँ सीखें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ PHP Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या PHP Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर PHP Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“मैजिक विधियों का परिचय” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस PHP Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर PHP Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. क्लास, प्रॉपर्टी और विधियाँ
  2. कंस्ट्रक्टर और डिस्ट्रक्टर
  3. स्टैटिक प्रॉपर्टी और विधियाँ
  4. मैजिक विधियों का परिचय
← PHP Academy पर वापस जाएँ