PHP मा एब्स्ट्र्याक्ट क्लास के हो?

PHP OOP मा स्थिरहरू
php इन्टरफेस बनाम सार वर्ग

यस विस्तृत लेखमा, हामी PHP अमूर्त कक्षाहरूको दायरामा गहिरो जान्छौं। यस लेखले तपाइँलाई तपाइँको PHP विकास परियोजनाहरूमा अमूर्त कक्षाहरू कसरी प्रयोग गर्ने भन्ने बारे पूर्ण सिंहावलोकन प्रदान गर्दछ, सिद्धान्तहरू बुझ्नदेखि सिन्ट्याक्स र कार्यान्वयनको जाँच गर्न। यो लेखले तपाइँलाई तपाइँको कोडमा अमूर्त कक्षाहरूसँग सफलतापूर्वक काम गर्न ज्ञान र क्षमताहरू प्रदान गर्दछ, चाहे तपाइँ एक नयाँ हो वा एक अनुभवी विकासकर्ता।

एउटा अमूर्त वर्गमा विधिहरूको घोषणा हुन्छ तर तिनीहरूको परिभाषा होइन। यसमा तिनीहरूको नाम मात्र समावेश छ। यी विधिहरूलाई परिभाषित गर्ने जिम्मेवारी बालवर्गको हो।

एक अमूर्त विधि के हो?

एब्स्ट्र्याक्ट मेथड एब्स्ट्र्याक्ट क्लासको विधि हो जुन एब्स्ट्र्याक्ट किवर्डहरू प्रयोग गरेर घोषणा गरिन्छ र यसमा बडी समावेश हुँदैन। यो बच्चाको वर्ग द्वारा परिभाषित गरिएको छ।

  • सार कुञ्जी शब्द एक सार वर्ग वा विधि घोषणा गर्न प्रयोग गरिन्छ।
  • एउटा अमूर्त वर्गमा कम्तिमा एउटा अमूर्त विधि समावेश हुनुपर्छ। यद्यपि, यसले गैर-अमूर्त विधिहरू पनि समावेश गर्न सक्छ।

सिन्ट्याक्स

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

PHP मा सार वर्ग को नियम के हो?

  • एउटा अमूर्त वर्गमा कम्तिमा एउटा अमूर्त विधि समावेश हुनुपर्छ। यद्यपि, यसले गैर-अमूर्त विधिहरू पनि समावेश गर्न सक्छ।
  • जब बच्चालाई एब्स्ट्र्याक्ट पेरेन्ट क्लास इनहेरिट भनिन्छ, यसले अभिभावक वर्गको एब्स्ट्र्याक्ट विधिहरू समान नामको साथ परिभाषित गर्नुपर्छ।
  • बाल वर्गमा एस्बट्र्याक्ट विधिहरू परिभाषित गर्दा, यसलाई कम प्रतिबन्धित पहुँच परिमार्जनकर्तासँग परिभाषित गरिनुपर्छ। उदाहरणका लागि, यदि अभिभावक वर्गमा अमूर्त विधि समावेश छ सुरक्षित पहुँच परिमार्जनकर्ता। त्यसोभए, जब बाल वर्गले यो विधि परिभाषित गर्दछ, यसले यसको पहुँच परिमार्जनकर्तालाई पनि राख्नुपर्छ सुरक्षित or सार्वजनिक। यसले यसलाई सेट गर्न सक्दैन निजी, किनभने यो सुरक्षित भन्दा बढी प्रतिबन्धित छ।
  • एब्स्ट्र्याक्ट विधि परिभाषित गर्ने बाल वर्गले अभिभावक एस्ब्ट्र्याक्ट वर्गमा घोषणामा निर्दिष्ट गरिए अनुसार समान संख्यामा तर्कहरू पास गर्नुपर्छ। यद्यपि, बाल वर्गसँग आवश्यक बाहेक वैकल्पिक/अतिरिक्त तर्कहरू हुन सक्छन्।

PHP मा सार वर्ग को उदाहरण

माथिको उदाहरणको व्याख्या

<!-- wp:code -->
<pre class="wp-block-code"><code><?php
// Parent abstract class
abstract class Bike {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract public function introduction() : string;
}

// Child classes defining the parent classes
class Honda extends Bike {
  public function intro() : string {
    return "I am $this->name!";
  }
}

class Suzuki extends Bike {
  public function introduction() : string {
    return "I am $this->name!";
  }
}

// Objects from child classes
$honda = new honda("Honda");
echo $honda->introduction();

$suzuki= new suzuki("Suzuki");
echo $suzuki->introduction();

?></code></pre>
<!-- /wp:code -->
  • माथिको उदाहरणमा, हामी एउटा अमूर्त वर्ग सिर्जना गर्छौं बाइक जसमा अमूर्त विधि समावेश छ परिचय.
  • हामी दुई बाल कक्षाहरू सिर्जना गर्छौं होन्डा सुजुकी जसले अमूर्त वर्ग विस्तार गर्दछ र परिचय विधि परिभाषित गर्दछ।
  • हामी यी वर्गका वस्तुहरू सिर्जना गर्छौं र तिनीहरूका वस्तुहरू प्रयोग गरेर परिचय विधिलाई कल गर्छौं। परिचय विधि यसको सम्बन्धित वर्ग द्वारा दिइएको कार्यान्वयन अनुसार काम गर्दछ।

मेथड ओभरराइडिङमा अतिरिक्त आर्गुमेन्टहरू भएको अमूर्त वर्गको उदाहरण

<?php
// Parent abstract class
abstract class Bike {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract protected function introduction($model) : string;
}

// Child classes defining the parent classes
class Honda extends Bike {
  public function intro($model) : string {
    return "I am $this->name. My model is $model";
  }
}

class Suzuki extends Bike {
  public function introduction($model, $color=null) : string {
    return "I am $this->name. My model is $model and color is $color";
  }
}

// Objects from child classes
$honda = new honda("Honda");
echo $honda->introduction();

$suzuki= new suzuki("Suzuki");
echo $suzuki->introduction();
?>

माथिको उदाहरणको व्याख्या

  • माथिको उदाहरणको आधारभूत तर्क अघिल्लो उदाहरण जस्तै छ। यद्यपि, हामी परिचय विधिमा प्रकार्यमा अतिरिक्त तर्क पास गर्छौं सुजुकी वर्ग।
  • हामीले यस ट्यूटोरियलमा पहिले नै नियम परिभाषित गरिसकेका छौं, अभिभावक वर्गको अमूर्त विधि लागू गर्दा बाल वर्गको पहुँच परिमार्जनकर्ता यस विधिको घोषणाको लागि अभिभावक वर्गमा निर्दिष्ट भन्दा कम हुनुपर्छ। त्यसोभए, दुबै बाल कक्षाहरूले परिचय विधि परिभाषित गर्न सार्वजनिक पहुँच परिमार्जनक प्रयोग गर्दछ।
  • निजी पहुँच परिमार्जनक संग प्रकार्य परिभाषित गर्ने प्रयास गर्नुहोस्, यसले त्रुटि उत्पन्न गर्नेछ।

नोट: अमूर्त वर्गमा कुनै कन्स्ट्रक्टर विधि समावेश छैन। त्यसोभए, हामी अमूर्त वर्गको उदाहरण सिर्जना गर्न सक्दैनौं।

कक्षा अमूर्त PHP 8 आधिकारिक दस्तावेज।

PHP OOP मा स्थिरहरू
php इन्टरफेस बनाम सार वर्ग
नजिक

PHP को बारेमा अप-टु-डेट रहनुहोस्!

हामी स्प्याम गर्दैनौं!

en English
X
माथि स्क्रोल गर्नुहोस्