Bir sınıf içinde yer alan bir dizi erişirken En iyi uygulama

4 Cevap php

Ben bir müşteri için temel bir sınıf oluşturduk.

Ben daha önce bu yapılır ve verilere erişmek için en iyi yolu bilmek istiyorum değil.

Ben müşteri dizide her alan için bir get () yöntemi var mıyım yoksa sadece sayfa ile müşteri geri dizi ve erişim geçmelidir.

yani sadece bir dizi döndürür

class Customer {

  protected $id;
  protected $customer;

  public function __construct($customer_id) {
    $this->id = $customer_id;
    $this->set_customer();
  }

  protected function set_customer() {
    $query = mysql_query("SELECT * FROM customer WHERE id = '$this->id'");
    $this->customer = mysql_fetch_row($query);
  }

  public function get_customer() {
    return $this->customer;
  }
}

karşı Dizideki her öğe için bir yöntem oluşturmak

class Customer {

  protected $id;
  protected $customer;

  public function __construct($customer_id) {
    $this->id = $customer_id;
    $this->set_customer();
  }

  protected function set_customer() {
    $query = mysql_query("SELECT * FROM customer WHERE id = '$this->id'");
    $this->customer = mysql_fetch_row($query);
  }

  public function get_customer_name() {
    return $this->customer->customer_name;
  }

  ...

  ...
}

Tobias 'yorumlarına dayanarak seçeneği 3 karşı: (sözdizimi doğru olup olmadığından emin değil)

class Customer {

  protected $id;
  protected $customer;

  public function __construct($customer_id) {
    $this->id = $customer_id;
    return $this->set_customer();
  }

  protected function set_customer() {
    $query = mysql_query("SELECT * FROM customer WHERE id = '$this->id'");
    return mysql_fetch_row($query);
  }
}

4 Cevap

Ben sadece yerine sadece her alan için mantığı yapma tüm verilerin bir dizi dönmek için iyi olduğunu söyleyebilirim. Muhtemelen daha sonra bir alanına ihtiyacınız olduğunu sık sık olacak, ve bunun için farklı yöntemler arayarak rahatsız edici olacaktır.

set işlevi varsayılan olarak verileri döndürmek var - her zaman hemen sonra veri kullanırsanız yapılan herhangi bir zarar.

Benim görüşüme göre daha yaklaşım daha iyidir, size sadece müşteri satır dönmek ve orada almak için tüm proje etrafında o satırı kullanarak ilk yaklaşımın aksine sınıf içinde müşteri hakkında bütün bilgileri almak more müşteri ayrıntıları.

Get_ ve set_ yöntemleri sahip hakkında güzel bir şey sınıf akıllı yapabilirsiniz olmasıdır. Sınıf geçerli bir değer ne olduğunu bilir ve bir hata döndürebilir çünkü sınıfını kullanarak kodlayıcı görünümü, geçersiz bir değere bir değişken set_ olamaz. Sen sonuç geçerli olup olmadığını görünüm kodlayıcı görmek için izin her alan için bir valid_ yöntemi ekleyebilirsiniz. Daha iyi, daha tutarlı veri ile sonuna kadar.