Constructor & Destructor in PHP

 


Constructor & Destructor in PHP

الباني والمدمر في PHP




قائمة المصطلحات والتعريفات: 

المصطلح باللغة العربية

المصطلح باللغة الإنجليزية

التعريف

باني

Constructor

هو دالة خاصة تستدعى تلقائيا عند إنشاء كائن من الفئة لتهيئة الخصائص.

مدمر

Destructor

دالة خاصة تستدعى تلقائيا عند تدمير كائن لتنظيف الموارد التي استخدمها.


 

المقدمة:

يعتبر الباني والمدمر من المفاهيم الأساسية في البرمجة الكائنية في لغة PHP. يتيح الباني إمكانية تهيئة الكائنات عند إنشائها، بينما يتيح المدمر تنظيف الموارد المستخدمة من قبل الكائنات قبل إزالتها من الذاكرة

 تهدف هذه الوثيقة إلى شرح مفهومي الباني (Constructor) والمدمر (Destructor) في لغة البرمجة PHP، مع تقديم أمثلة 



ما هو الباني (Constructor)؟

الباني هو دالة خاصة داخل الفئة تستدعى تلقائيا عند إنشاء كائن جديد منها. يستخدم الباني عادة لتهيئة الخصائص الأساسية للكائن وإعداد البيئة المناسبة له،  ال constructor لا يعيد قيمة ، أي ليس له إرجاع.


كيفية إنشاء الباني في PHP

  يتم تعريف الباني باستخدام الكلمة المحجوزة __construct. يمكن للباني أن يقبل معلمات لتهيئة خصائص الكائن.

<?php

class Car {

    public $color;

    public $model;


    public function __construct($color, $model) {

        $this->color = $color;

        $this->model = $model;

    }


    public function displayDetails() {

        return "This car is a " . $this->color . " " . $this->model . ".";

    }

}


$myCar = new Car("red", "BMW");

echo $myCar->displayDetails(); // This car is a red BMW.

?>

 باني لصف يرث من صف أخر:

<?php

class ParentClass {

    protected $name;


    // Constructor الخاص بـ class الأب

    public function __construct($name) {

        $this->name = $name;

        echo "تم إنشاء كائن من ParentClass: {$this->name}\n";

    }

}


class ChildClass extends ParentClass {

    private $age;


    // Constructor الخاص بـ class الابن

    public function __construct($name, $age) {

        // استدعاء Constructor الخاص بـ class الأب

        parent::__construct($name);

        

        // تهيئة خصائص class الابن

        $this->age = $age;

        echo "تم إنشاء كائن من ChildClass: العمر {$this->age}\n";

    }

}


// إنشاء كائن من ChildClass

$child = new ChildClass("أحمد", 25);

?>





ما هو المدمر (Destructor)؟

المدمر هو دالة خاصة تستدعى تلقائيا عندما يتم تدمير الكائن أو عندما تنتهي صلاحية النص البرمجي. يستخدم المدمر عادة لتنظيف الموارد التي استخدمها الكائن، مثل إغلاق اتصالات قاعدة البيانات أو حذف الملفات المؤقتة.



كيفية إنشاء المدمر في PHP

يتم تعريف المدمر باستخدام الكلمة المحجوزة __destruct.

<?php

class Car {

    public $color;

    public $model;


    public function __construct($color, $model) {

        $this->color = $color;

        $this->model = $model;

    }


    public function __destruct() {

        echo "The object of " . $this->model . " is being destroyed.";

    }

}


$myCar = new Car("red", "BMW");

echo $myCar->displayDetails(); // This car is a red BMW.

// عند انتهاء النص البرمجي، سيتم استدعاء المدمر تلقائيًا

?>


أمثلة 

مثال 1: إدارة اتصال قاعدة البيانات

<?php

class Database {

    private $connection;


    public function __construct($host, $username, $password, $dbname) {

        $this->connection = new mysqli($host, $username, $password, $dbname);

        if ($this->connection->connect_error) {

            die("Connection failed: " . $this->connection->connect_error);

        }

        echo "Connected successfully";

    }


    public function __destruct() {

        $this->connection->close();

        echo "Connection closed";

    }

}


$db = new Database("localhost", "root", "toor", "test_db");

?>


دوال باني متعددة في نفس الصف:

توفر لغة البي اتش بي طريقة لانشاء غرض باكثر من معاملات دخل بشكل مختلف عن اللغات الاخرى , حيث ان عملية استقبال عدد مختلف من المعاملات هو امر يحتاج اليه المبرمج في كثير من الاحيان فمثلا:

اذا كان لدينا كود برمجي نريد تطبيقه على مخدمين وكل مخدم له معاملات مختلفة فبدل ان نقوم بانشاء نسختين من الصف نكتفي بانشاء نسخة واحدة من الصف ولكن باختلاف عدد معاملات الدخل 

سأدرج مثال يوضح ذلك

class Example {

  function __construct() {

  $argv = func_get_args();

  switch( func_num_args() ) {

  case 1:

  self::__construct1($argv[0]);

  break;

  case 2:

  self::__construct2( $argv[0], $argv[1] );

  break;

  case 3:

  self::__construct3( $argv[0], $argv[1], $argv[2] );

  }

}

function __construct1($arg1) {

// do something else

}

function __construct2($arg1, $arg2) {

// do something else

}

function __construct3($arg1, $arg2, $arg3) {

// do something else

}

}

$a = new Example("Argument 1");

$b = new Example("Argument 1", "Argument 2");

$b = new Example("Argument 1", "Argument 2", "Argument 3");








المراجع


اسم المرجع

الرابط

tutorialspoint

tutorialspoint

geeksforgeeks

geeksforgeeks

w3schools

w3schools




Constructor & Destructor in PHP Constructor & Destructor in PHP بواسطة Remocolla Academy في يناير 21, 2026 تقييم: 5

ليست هناك تعليقات:

يتم التشغيل بواسطة Blogger.