पीएचपी ट्यूटोरियल

पीएचपी होम पीएचपी परिचय पीएचपी इंस्टाल पीएचपी सिंटैक्स पीएचपी टिप्पणियाँ पीएचपी चर पीएचपी इको / प्रिंट पीएचपी डेटा प्रकार पीएचपी स्ट्रिंग्स पीएचपी नंबर पीएचपी गणित पीएचपी स्थिरांक पीएचपी ऑपरेटर्स पीएचपी अगर ... और ... Elseif पीएचपी स्विच पीएचपी लूप्स पीएचपी कार्य पीएचपी सरणियाँ पीएचपी सुपरग्लोबल्स पीएचपी रेगेक्स

पीएचपी फॉर्म

PHP फॉर्म हैंडलिंग PHP फॉर्म सत्यापन पीएचपी फॉर्म की आवश्यकता पीएचपी फॉर्म यूआरएल/ई-मेल PHP फॉर्म पूर्ण

पीएचपी उन्नत

पीएचपी दिनांक और समय पीएचपी शामिल करें पीएचपी फाइल हैंडलिंग PHP फ़ाइल खोलें/पढ़ें PHP फ़ाइल बनाएँ/लिखें पीएचपी फ़ाइल अपलोड पीएचपी कुकीज़ पीएचपी सत्र पीएचपी फिल्टर पीएचपी फिल्टर उन्नत PHP कॉलबैक फ़ंक्शंस पीएचपी JSON पीएचपी अपवाद

पीएचपी ओओपी

पीएचपी ओओपी क्या है पीएचपी क्लासेस/ऑब्जेक्ट्स पीएचपी कंस्ट्रक्टर पीएचपी विनाशक पीएचपी एक्सेस संशोधक पीएचपी विरासत पीएचपी स्थिरांक पीएचपी सार वर्ग पीएचपी इंटरफेस पीएचपी लक्षण PHP स्टेटिक तरीके पीएचपी स्टेटिक गुण पीएचपी नेमस्पेस पीएचपी Iterables

MySQL डेटाबेस

MySQL डेटाबेस MySQL कनेक्ट MySQL डीबी बनाएँ MySQL तालिका बनाएँ MySQL डेटा डालें MySQL अंतिम आईडी प्राप्त करें MySQL एकाधिक सम्मिलित करें MySQL तैयार MySQL डेटा का चयन करें MySQL कहाँ MySQL ऑर्डर बाय MySQL डेटा हटाएं MySQL अद्यतन डेटा MySQL सीमा डेटा

पीएचपी एक्सएमएल

पीएचपी एक्सएमएल पार्सर्स पीएचपी सिंपलएक्सएमएल पार्सर पीएचपी सिंपलएक्सएमएल - प्राप्त करें पीएचपी एक्सएमएल एक्सपैट पीएचपी एक्सएमएल डोम

पीएचपी - AJAX

AJAX परिचय अजाक्स पीएचपी AJAX डेटाबेस अजाक्स एक्सएमएल AJAX लाइव खोज AJAX पोल

पीएचपी उदाहरण

पीएचपी उदाहरण पीएचपी संकलक पीएचपी प्रश्नोत्तरी पीएचपी व्यायाम पीएचपी प्रमाणपत्र

पीएचपी संदर्भ

पीएचपी सिंहावलोकन पीएचपी सरणी पीएचपी कैलेंडर पीएचपी तिथि पीएचपी निर्देशिका पीएचपी त्रुटि पीएचपी अपवाद पीएचपी फाइल सिस्टम पीएचपी फ़िल्टर पीएचपी एफ़टीपी पीएचपी JSON पीएचपी कीवर्ड पीएचपी लिबक्सएमएल पीएचपी मेल पीएचपी गणित पीएचपी विविध पीएचपी MySQLi पीएचपी नेटवर्क पीएचपी आउटपुट कंट्रोल पीएचपी रेगेक्स पीएचपी सिंपलएक्सएमएल पीएचपी स्ट्रीम पीएचपी स्ट्रिंग पीएचपी वैरिएबल हैंडलिंग पीएचपी एक्सएमएल पार्सर पीएचपी ज़िप पीएचपी समयक्षेत्र

पीएचपी ओओपी - सार कक्षाएं


PHP - सार वर्ग और विधियाँ क्या हैं?

सार वर्ग और विधियाँ तब होती हैं जब मूल वर्ग में एक नामित विधि होती है, लेकिन कार्यों को भरने के लिए इसके बच्चे वर्ग की आवश्यकता होती है।

एक अमूर्त वर्ग एक ऐसा वर्ग है जिसमें कम से कम एक सार विधि होती है। एक अमूर्त विधि एक ऐसी विधि है जिसे घोषित किया जाता है, लेकिन कोड में लागू नहीं किया जाता है।

एक अमूर्त वर्ग या विधि को abstract कीवर्ड के साथ परिभाषित किया गया है:

वाक्य - विन्यास

<?php
abstract class ParentClass {
  abstract public function someMethod1();
  abstract public function someMethod2($name, $color);
  abstract public function someMethod3() : string;
}
?>

जब एक अमूर्त वर्ग से विरासत में मिलता है, तो बाल वर्ग विधि को उसी नाम से परिभाषित किया जाना चाहिए, और समान या कम प्रतिबंधित पहुंच संशोधक। इसलिए, यदि अमूर्त विधि को संरक्षित के रूप में परिभाषित किया गया है, तो बाल वर्ग विधि को संरक्षित या सार्वजनिक के रूप में परिभाषित किया जाना चाहिए, लेकिन निजी नहीं। साथ ही, आवश्यक तर्कों का प्रकार और संख्या समान होनी चाहिए। हालांकि, बाल वर्गों के अतिरिक्त वैकल्पिक तर्क भी हो सकते हैं।

इसलिए, जब एक बच्चा वर्ग एक अमूर्त वर्ग से विरासत में मिला है, तो हमारे पास निम्नलिखित नियम हैं:

  • चाइल्ड क्लास मेथड को उसी नाम से परिभाषित किया जाना चाहिए और यह पैरेंट एब्स्ट्रैक्ट मेथड को फिर से परिभाषित करता है
  • चाइल्ड क्लास विधि को समान या कम प्रतिबंधित एक्सेस संशोधक के साथ परिभाषित किया जाना चाहिए
  • आवश्यक तर्कों की संख्या समान होनी चाहिए। हालांकि, बाल वर्ग के अतिरिक्त वैकल्पिक तर्क भी हो सकते हैं

आइए एक उदाहरण देखें:

उदाहरण

<?php
// Parent class
abstract class Car {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract public function intro() : string;
}

// Child classes
class Audi extends Car {
  public function intro() : string {
    return "Choose German quality! I'm an $this->name!";
  }
}

class Volvo extends Car {
  public function intro() : string {
    return "Proud to be Swedish! I'm a $this->name!";
  }
}

class Citroen extends Car {
  public function intro() : string {
    return "French extravagance! I'm a $this->name!";
  }
}

// Create objects from the child classes
$audi = new audi("Audi");
echo $audi->intro();
echo "<br>";

$volvo = new volvo("Volvo");
echo $volvo->intro();
echo "<br>";

$citroen = new citroen("Citroen");
echo $citroen->intro();
?>

उदाहरण समझाया गया

ऑडी, वोल्वो और सिट्रोएन वर्ग कार वर्ग से विरासत में मिले हैं। इसका मतलब यह है कि ऑडी, वोल्वो, और सिट्रोएन वर्ग सार्वजनिक $name संपत्ति के साथ-साथ सार्वजनिक __construct() कार वर्ग से विरासत के कारण विधि का उपयोग कर सकते हैं।

लेकिन, इंट्रो () एक अमूर्त विधि है जिसे सभी बाल वर्गों में परिभाषित किया जाना चाहिए और उन्हें एक स्ट्रिंग वापस करनी चाहिए।



PHP - अधिक सार वर्ग उदाहरण

आइए एक और उदाहरण देखें जहां सार विधि का तर्क है:

उदाहरण

<?php
abstract class ParentClass {
  // Abstract method with an argument
  abstract protected function prefixName($name);
}

class ChildClass extends ParentClass {
  public function prefixName($name) {
    if ($name == "John Doe") {
      $prefix = "Mr.";
    } elseif ($name == "Jane Doe") {
      $prefix = "Mrs.";
    } else {
      $prefix = "";
    }
    return "{$prefix} {$name}";
  }
}

$class = new ChildClass;
echo $class->prefixName("John Doe");
echo "<br>";
echo $class->prefixName("Jane Doe");
?>

आइए एक और उदाहरण देखें जहां अमूर्त विधि में एक तर्क है, और बाल वर्ग में दो वैकल्पिक तर्क हैं जो माता-पिता की अमूर्त विधि में परिभाषित नहीं हैं:

उदाहरण

<?php
abstract class ParentClass {
  // Abstract method with an argument
  abstract protected function prefixName($name);
}

class ChildClass extends ParentClass {
  // The child class may define optional arguments that are not in the parent's abstract method
  public function prefixName($name, $separator = ".", $greet = "Dear") {
    if ($name == "John Doe") {
      $prefix = "Mr";
    } elseif ($name == "Jane Doe") {
      $prefix = "Mrs";
    } else {
      $prefix = "";
    }
    return "{$greet} {$prefix}{$separator} {$name}";
  }
}

$class = new ChildClass;
echo $class->prefixName("John Doe");
echo "<br>";
echo $class->prefixName("Jane Doe");
?>