Eğer değişkenlere değer atayabilirsiniz, neden bir yapıcı yöntem var mıdır?

2 Cevap php

Ben sadece PHP öğrenme yaşıyorum ve ben hakkında kafam karıştı ne __ yapı () yönteminin amacı nedir?

Ben bu yapabilirsiniz:

class Bear {
    // define properties
    public $name = 'Bill';
    public $weight = 200;

    // define methods
    public function eat($units) {
        echo $this->name." is eating ".$units." units of food... <br />";
        $this->weight += $units;
    }
}

Öyleyse neden yerine bir kurucu ile ne? :

class Bear {
    // define properties
    public $name;
    public $weight;

    public function __construct(){

        $this->name = 'Bill';
        $this->weight = 200;
    }
    // define methods
    public function eat($units) {
        echo $this->name." is eating ".$units." units of food... <br />";
        $this->weight += $units;
    }
}

2 Cevap

Kurucular değişken başlatma neler yapabileceğini daha karmaşık mantığı yapabilir çünkü. Örneğin:

class Bear {
  private $weight;
  private $colour;

  public __construct($weight, $colour = 'brown') {
    if ($weight < 100) {
      throw new Exception("Weight $weight less than 100");
    }
    if (!$colour) {
      throw new Exception("Colour not specified");
    }
    $this->weight = $weight;
    $this->colour = $colour;
  }

  ...
}

Yapıcı isteğe bağlıdır ancak rasgele kod yürütebilir.

Size sınıf dinamik değişkenleri verebilir:

ile:

public function __construct(name, amount){

    $this->name = name;
    $this->weight = amount;
}

Siz "bill" ve "Joe" için sınıfını kullanın ve miktarları farklı değerler kullanabilirsiniz.

Sen kurucu her zaman tüm ihtiyaçlarını talep edilmelidir: Ayrıca size class her zaman ihtiyaç duyduğu tüm, örneğin bir çalışma veritabanı bağlantısı sahip olacak emin olabilirsiniz:

public function __construct(database_connection){
[...]
}