آموزش متد جادویی construct__

  • خانه
  • آموزش متد جادویی construct__
Image تحقیقات

آموزش متد جادویی construct__

با سلام

در این جلسه به معرفی متد جایی construct__  در زبان آموزش php می پردازیم .

میشه گفت این متد رایج ترین و پر کاربردترین متد جادویی (magic methods) هست.construct__ دقیقا همان جایی هست که شما کلاس ها و آبجکت ها و متغیرهایی که لازم دارین را مقدار دهی اولیه می نمایید .

این متد زمانی که از کلاس جاری شی ای ساخته شود اجرا می شود.

فرض کنید دو کلاس زیر را داریم :

 

<?php
class Device {
    public $name;           // the name of the device
    public $battery;        // holds a Battery object
    public $data = array(); // stores misc. data in an array
    public $connection;     // holds some connection resource

    public function  __construct(Battery $battery, $name) {
        // $battery can only be a valid Battery object
        $this->battery = $battery;
        $this->name = $name;
        // connect to the network
        $this->connect();
    }
    //...
    
 
    protected function connect() {
        // connect to some external network
        $this->connection = 'resource';
        echo $this->name . ' connected' . PHP_EOL;
    }
 
    protected function disconnect() {
        // safely disconnect from network
        $this->connection = null;
        echo $this->name . ' disconnected' . PHP_EOL;
    }
}
 
class Battery {
    private $charge = 0;
 
    public function setCharge($charge) {
        $charge = (int)$charge;
        if($charge < 0) {
            $charge = 0;
        }
        elseif($charge > 100) {
            $charge = 100;
        }
        $this->charge = $charge;
    }
}

 

  • در خطوط بین ۸ تا ۱۴ یا همان construct نوشته شده است .
  • همانطور که مشاهده می نمایید این متد دو پارامتر با نام های $battery و $name می گیرد و به وسلیه ی آن , دو پروپرتی با همین نام را مقدار دهی می نماید و پس از این کارها متد connection را صدا می زند .

در واقع متد سازنده یا construct این اطمینام را به ما می دهد که موقع استفاده از کلاس حتما موارد لازم فراخوانی شده باشند.

حالا اگر بخواهیم از کلاس Device استفاده نمایید باید مانند زیر عمل کرده و پارامترهای لازم را نیز به کلاس ارسال نماییم :

$device = new Device(new Battery(), 'iMagic');
// iMagic connected
echo $device->name;
// iMagic

 

اگر احتمالا فراموش کنیم یکی از پارامترهای لازم را به کلاس بفرستیم :

خطای زیر رخ خواهد داد :

// Result: PHP Warning:  Missing argument 2 for Device::__construct()

نکته : برای صدا زدن تابع سازنده ی کلاسه والد از عبارت زیر استفاده می نماییم زیرا به صورت اتومات فراخوانی نمی شود :

parent::__construct()

مثال :

<?php
class BaseClass {
   function __construct() {
       print "In BaseClass constructor\n";
   }
}

class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();
       print "In SubClass constructor\n";
   }
}

$obj = new BaseClass();
$obj = new SubClass();
  • در خط ۸ از کلاس BaseClass ارث بری کرده ایم و برای صدا زدنه تابع سازنده ی BaseClass در خط ۱۰ به صورت دستی این کار را انجام داده ایم

خب اینم از قسمت مربوط به متد جادویی construct .

بقیه متدهارا نیز شرح خواهیم داد .