PHP Academy · पाठ

स्टैटिक प्रॉपर्टी और विधियाँ

स्टैटिक सदस्यों का उपयोग करें और समझें कि इंस्टेंस के बिना उन्हें कब कॉल करना है

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

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

परिचय: स्थैतिक गुण और विधियाँ

स्थैतिक सदस्य किसी इंस्टेंस के बजाय स्वयं वर्ग से संबंधित होते हैं। वर्ग के भीतर उन्हें ClassName::member या self:: से एक्सेस करें। वे सभी इंस्टेंस के बीच साझा किए जाते हैं।

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

स्थैतिक गुणों और विधियों की मुख्य अवधारणाएँ:

  • static कुंजीशब्द से घोषित करें
  • :: से एक्सेस करें (दायरा-समाधान ऑपरेटर)
  • वर्ग के भीतर self::; बाहर से ClassName::
  • static:: से विलंबित स्थैतिक बाइंडिंग

स्थैतिक गुण

उदाहरण:

<?php
class AppConfig {
    private static array $settings = [];

    public static function set(string $key, mixed $val): void {
        self::$settings[$key] = $val;
    }

    public static function get(string $key, mixed $default = null): mixed {
        return self::$settings[$key] ?? $default;
    }
}

AppConfig::set('debug', true);
echo AppConfig::get('debug') ? 'debug on' : 'debug off';

स्थैतिक विधि

आगे:

<?php
class MathHelper {
    public static function clamp(float $v, float $min, float $max): float {
        return max($min, min($max, $v));
    }

    public static function lerp(float $a, float $b, float $t): float {
        return $a + ($b - $a) * $t;
    }
}

echo MathHelper::clamp(150, 0, 100); // 100
echo MathHelper::lerp(0, 100, 0.5);  // 50

सिंगलटन प्रतिरूप

अभ्यास:

<?php
class Database {
    private static ?Database $instance = null;

    private function __construct() {
        echo 'Connected to DB';
    }

    public static function getInstance(): self {
        if (self::$instance === null) {
            self::$instance = new self();
        }
        return self::$instance;
    }
}

$db1 = Database::getInstance();  // 'Connected to DB'
$db2 = Database::getInstance();  // no output — same instance
echo ($db1 === $db2) ? 'same' : 'different'; // same

स्थैतिक काउंटर

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

<?php
class EventEmitter {
    private static int $instanceCount = 0;

    public function __construct() {
        self::$instanceCount++;
    }

    public static function count(): int {
        return self::$instanceCount;
    }
}

new EventEmitter();
new EventEmitter();
new EventEmitter();
echo EventEmitter::count();  // 3

विलंबित स्थैतिक बाइंडिंग

उन्नत उपयोग:

<?php
class ParentClass {
    public static function create(): static {
        return new static();  // resolves to calling subclass
    }

    public function getClass(): string {
        return static::class;  // late static binding
    }
}

class ChildClass extends ParentClass {}

$obj = ChildClass::create();
echo $obj->getClass();  // ChildClass

स्थैतिक फ़ैक्टरी

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

<?php
class Response {
    private function __construct(
        private int   $status,
        private mixed $body
    ) {}

    public static function ok(mixed $data): self {
        return new self(200, $data);
    }

    public static function notFound(): self {
        return new self(404, ['error' => 'Not Found']);
    }

    public function toJson(): string {
        return json_encode(['status' => $this->status, 'body' => $this->body]);
    }
}

echo Response::ok(['users' => []])->toJson();

स्थैतिक और इंस्टेंस के बीच समझौते

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

<?php
// Static: no object needed, but harder to test/mock
class Validator {
    public static function isEmail(string $s): bool {
        return (bool) filter_var($s, FILTER_VALIDATE_EMAIL);
    }
}

// Instance: injectable dependency, testable
class ValidatorService {
    public function isEmail(string $s): bool {
        return (bool) filter_var($s, FILTER_VALIDATE_EMAIL);
    }
}
// Prefer instance classes in larger applications

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

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

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

स्थैतिक गुणों और विधियों के साथ इन सामान्य गलतियों से बचें:

  • स्थैतिक सदस्य सभी इंस्टेंस के बीच साझा किए जाते हैं
  • विरासत योग्य वर्गों में self:: के बजाय विलंबित स्थैतिक बाइंडिंग (static::) को प्राथमिकता दें
  • सिंगलटन एक सामान्य, लेकिन कभी-कभी अत्यधिक उपयोग किया जाने वाला प्रतिरूप है
  • इकाई परीक्षणों में स्थैतिक विधियों का नकली रूप बनाना अधिक कठिन होता है

त्वरित जाँच

विरासत का सम्मान करते हुए किसी वर्ग के भीतर स्थैतिक गुण को एक्सेस करने वाला कुंजीशब्द कौन-सा है (विलंबित स्थैतिक बाइंडिंग)?

पुनरावलोकन: स्थैतिक गुण और विधियाँ

आपने स्थैतिक गुणों और विधियों का अध्ययन कर लिया है। याद रखने योग्य मुख्य बातें:

  • स्थैतिक सदस्य सभी इंस्टेंस के बीच साझा किए जाते हैं
  • विरासत योग्य वर्गों में self:: के बजाय विलंबित स्थैतिक बाइंडिंग (static::) को प्राथमिकता दें
  • सिंगलटन एक सामान्य, लेकिन कभी-कभी अत्यधिक उपयोग किया जाने वाला प्रतिरूप है
  • इकाई परीक्षणों में स्थैतिक विधियों का नकली रूप बनाना अधिक कठिन होता है
शुरुआत निःशुल्क

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

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

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

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

क्या “स्टैटिक प्रॉपर्टी और विधियाँ” पाठ निःशुल्क है?

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

“स्टैटिक प्रॉपर्टी और विधियाँ” में मैं क्या सीखूँगा?

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

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

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

“स्टैटिक प्रॉपर्टी और विधियाँ” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

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