পিএইচপি-তে কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর

C

পূর্ববর্তী নিবন্ধে, আমরা একটি শ্রেণী এবং বস্তুর মৌলিক ধারণাগুলি কভার করেছি। এই পিএইচপি টিউটোরিয়ালে, আপনি পিএইচপি ক্লাসে কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর শিখবেন।

পিএইচপি ক্লাসে কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর কী?

রচয়িতা

নাম অনুসারে, একটি গঠন একটি বস্তুকে গঠন করে। কনস্ট্রাক্টরের আসল সংজ্ঞা হল, এটি ক্লাসের অবজেক্টকে আরম্ভ করে।

কিভাবে PHP এ কনস্ট্রাক্টর ঘোষণা করবেন?

পিএইচপি-তে কনস্ট্রাক্টর ঘোষণা করতে, কনস্ট্রাক্ট শব্দের সাথে ডবল আন্ডারস্কোর (__) ব্যবহার করুন। কনস্ট্রাক্টরের নাম অবশ্যই "কন্সট্রাক্টর" হতে হবে তা নিশ্চিত করুন।

এই ক্ষেত্রে

<?php
class Pet {
  public $nick_name;
  public $color;

  function __construct($name) {
    $this->nick_name = $name;
  }
  function get_name() {
    return $this->nick_name;
  }
}

$cat = new Pet("Cat");
echo $cat>get_name();
?>
  • উপরের উদাহরণে, আমরা ডবল আন্ডারস্কোর ব্যবহার করে একটি কনস্ট্রাক্টর তৈরি করি।
  • আমরা একটি অবজেক্ট তৈরি করি, যা স্বয়ংক্রিয়ভাবে কনস্ট্রাক্টর ব্যবহার করে এবং এটি Cat দিয়ে শুরু করে।
  • cat অবজেক্টে নাম সেট করার জন্য আমাদের set_name ফাংশনটি কল করার দরকার নেই।

সুতরাং, কনস্ট্রাক্টর সম্পর্কে উপরোক্ত আলোচনা থেকে এটা স্পষ্ট যে অবজেক্টটিকে আরম্ভ করা সহজ করে তোলে এবং এটি করার জন্য কোনো সেটার ফাংশনের প্রয়োজন হয় না।

পিএইচপি-তে কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর সম্পর্কে আরও উদাহরণ

<?php
class Pet {
  public $nick_name;
  public $color;

  function __construct($name, $color) {
    $this->nick_name = $name;
    $this->color = $color;
  }
  function get_name() {
    return $this->nick_name;
  }
  function get_color() {
    return $this->color;
  }
}

$cat = new Pet("Cat", "Brown");
echo $cat->get_name();
echo "<br>";
echo $cat->get_color();
?>
  • উপরের উদাহরণে, আমরা দুটি প্যারামিটার সহ একটি কনস্ট্রাক্টর তৈরি করি এবং এই প্যারামগুলির সাথে ক্লাসের nick_name এবং রঙের বৈশিষ্ট্যগুলি শুরু করি।
  • আমরা নতুন বিড়াল বস্তু তৈরি করি এবং কনস্ট্রাউটরের প্রয়োজনীয় দুটি প্যারামিটার পাস করি। নিশ্চিত করুন, একটি অবজেক্ট তৈরি করতে, এটি যে ক্লাসের কনস্ট্রাক্টর অনুসারে প্যারামিটারের সংখ্যা প্রয়োজন।
  • অবজেক্ট তৈরি করার পর, আমরা ক্লাসের get_name এবং get_color সেটারের মাধ্যমে এটি পরীক্ষা করেছি। এটি বিড়াল বস্তুর নাম "বিড়াল" এবং এর রঙ "বাদামী" হিসাবে আউটপুট করবে।

আপনি পিএইচপি-তে অফিসিয়াল কনস্ট্রাক্টর ডকুমেন্টেশনের রেফারেন্স খুঁজে পেতে পারেন এখানে.

কনস্ট্রাক্টর সম্পর্কে গুরুত্বপূর্ণ ধারণা

OOP উত্তরাধিকারের পদ্ধতিকে অনুমতি দেয় যার দ্বারা একটি শিশু শ্রেণি একটি বেস ক্লাস বা পিতামাতার শ্রেণিকে প্রসারিত করতে পারে। আমরা এটিকে বিশদভাবে কভার করব, আপাতত, ধারণাটি বোঝার জন্য আমাদের কেবল এর বিবরণ প্রয়োজন। যদি চাইল্ড ক্লাস প্যারেন্ট ক্লাস প্রসারিত করে এবং প্যারেন্ট ক্লাস কনস্ট্রাক্টরকে তার নিজস্ব কনস্ট্রাক্টরে কল করতে চায়, তাহলে তার কনস্ট্রাক্টরের ভিতরে parent::construcor_name ব্যবহার করুন।

যদি চাইল্ড ক্লাসে এর কনস্ট্রাক্টর না থাকে, তাহলে বেস বা প্যারেন্ট ক্লাসের কনস্ট্রাক্টর একটি স্বাভাবিক ফাংশন হিসাবে উত্তরাধিকার সূত্রে প্রাপ্ত হয় যদি ব্যক্তিগত হিসাবে ঘোষণা না করা হয়।

কনস্ট্রাক্টরে ডিফল্ট প্যারামিটার কীভাবে ঘোষণা করবেন?

যেমন আপনি উপরে পড়েছেন যে একটি কনস্ট্রাক্টরের একাধিক প্যারামিটার থাকতে পারে, যা এটি ব্যবহার করে অবজেক্ট তৈরি করার সময় প্রদান করা হয়। কিন্তু, যদি আপনি অবজেক্ট তৈরি করার সময় পরামিতি প্রদান করা বাধ্যতামূলক না করতে চান, আপনি কনস্ট্রাক্টর প্যারামিটারের একটি ডিফল্ট মান সেট করতে পারেন। এই ক্ষেত্রে.

public function __construct(int $x, int $y = 0) {
        $this->x = $x;
        $this->y = $y;
    }
  • উপরের উদাহরণে, $y 0 এর একটি ডিফল্ট মান নির্ধারণ করা হয়েছে।
  • যদি অবজেক্ট $obj = new class (2) তৈরি করা হয়, y এর ডিফল্ট মান কনস্ট্রাক্টর দ্বারা 0 সেট করা হবে।

বিনাশকারী

ডেস্ট্রাক্টরের মূল উদ্দেশ্য হল প্রোগ্রামের এক্সিকিউশন বন্ধ হয়ে যাওয়ার পর বা প্রক্রিয়াটি বন্ধ হয়ে যাওয়ার পর মেমরি থেকে বস্তুটিকে ধ্বংস করা বা সরিয়ে দেওয়া।

পিএইচপি-তে, অবজেক্ট দ্বারা নেওয়া মেমরি মুক্ত করার জন্য আপনাকে ডেস্ট্রাক্টরকে কল করার দরকার নেই কারণ এটি স্ক্রিপ্টটি চালানো বন্ধ করার পরে সমস্ত অবজেক্ট অপসারণ করার জন্য এটি স্বয়ংক্রিয়ভাবে ধ্বংসকারীকে কল করে।

যাইহোক, আপনি কিছু বার্তা প্রিন্ট করার জন্য ডিস্ট্রাক্টর ঘোষণা করতে পারেন যা আপনাকে ডেস্ট্রক্টর কখন কল করবে এবং ডেস্ট্রক্টরের ভিতরে কী প্রক্রিয়াকরণ করা হয়েছে তা যাচাই করতে বা পরীক্ষা করতে সহায়তা করে।

পিএইচপিতে ডেস্ট্রাক্টর ঘোষণা করার জন্য নিম্নলিখিত উদাহরণটি দেখুন

<?php
class Pet {
  public $nick_name;
  public $color;

  function __construct($name) {
    $this->nick_name = $name;
  }
  function __destruct() {
    echo "The Pet is {$this->nick_name}.";
  }
}

$cat= new Pet("cat");
?>
  • উপরের উদাহরণে। আমরা কনস্ট্রাক্টর ব্যবহার করে একটি বস্তু তৈরি করি।
  • আমরা desctruct পদ্ধতির ভিতরে কিছু বার্তা প্রিন্ট করি।
  • স্ক্রিপ্ট চালানোর মাধ্যমে পরীক্ষা. ধ্বংসের ভিতরে বার্তার জন্য স্ক্রিপ্টের আউটপুট পর্যবেক্ষণ করুন।

ধ্বংসকারীর আরেকটি উদাহরণ

<?php
class Pet {
  public $nick_name;
  public $color;

  function __construct($name, $color = "brown") {
    $this->name = $nick_name;
    $this->color = $color;
  }
  function __destruct() {
    echo "The Pet is {$this->nick_name} and its color is {$this->color}.";
  }
}

$cat =  new Pet("Cat");
?>
  • উপরের উদাহরণে, আমরা অবজেক্টটি ইনশিয়ালাইজ করতে কনস্ট্রাক্টর ব্যবহার করি। পর্যবেক্ষক যে কনস্ট্রাক্টর দুটি প্যারামিটার গ্রহণ করে কিন্তু আমরা এটি একটি পাস করছি কারণ কনস্ট্রাক্টর রঙের ডিফল্ট মান ব্যবহার করে এবং অবজেক্টের রঙের বৈশিষ্ট্যে বরাদ্দ করে।
  • আমরা nick_name এবং color সহ desctruct পদ্ধতির ভিতরে কিছু বার্তা প্রিন্ট করি।
  • সমাপ্তি পয়েন্টে স্ক্রিপ্টের আউটপুট পর্যবেক্ষণ করুন।

এছাড়াও, আপনি স্ক্রিপ্টের সমাপ্তির সময়ে করা প্রয়োজন এমন কিছু কাজ সম্পাদন করতে ধ্বংসকারীকে কল করতে পারেন। ডাটাবেস সংযোগ বা বহিরাগত ফাইল স্ট্রিম অবজেক্ট বন্ধ করার মত.

বাস্তবায়নের দৃষ্টিকোণ অনুযায়ী ধ্বংসকারী দেখতে সহজ। যাইহোক, তারা ফুটো থেকে মেমরি নিরাপদ রাখতে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে।

পিএইচপি স্ক্রিপ্ট বন্ধ হওয়ার পরে যদি কোনও বস্তু মেমরিতে থাকে তবে এটি মেমরি লিকেজ সৃষ্টি করে। এটি গুরুতর সমস্যা সৃষ্টি করতে পারে, বিশেষ করে বড় আকারের অ্যাপ্লিকেশনের জন্য।

আপনি পিএইচপি-তে অফিসিয়াল ডেস্ট্রাক্টর ডকুমেন্টেশনের রেফারেন্স খুঁজে পেতে পারেন এখানে.

মন্তব্য যোগ করুন

টিউটর নেটওয়ার্ক

A থেকে Z পর্যন্ত PHP শিখুন