hangi yöntem daha verimli: bir sınıf özelliği ayarlamak;

4 Cevap php

Bu örnek düşünün lütfen. (PHP)

class Database{  
    private $result;  
    private $conn;

    function query($sql){  
        $result = $this->conn->query($sql);  
        // Set the Database::$result ?? Or return the value and avoid setting property?  
        return $result;
        // $this->result = $result;  
    }  
}

Bu yöntemlerin her ikisi de avantajları nelerdir? Nerede tabidir?

4 Cevap

En son yorumlar sadece bir anda etrafında belirlenen tek bir sonuç tutmak olacağını göstermektedir. Bu böyle olunca, ben (nesnenin bir veri üyesi olarak) nesnenin kendisi için kaydederek öneririz.

Eğer sadece tek bir sonuç setinde etrafında tutuyor beri Ayrıca, size daha açıklayıcı bir şey için sınıf yeniden adlandırabilirsiniz. "Veritabanı" Oldukça özetlemek değil. Bu bir "ResultSet" dir. Bu sonuç kümesinde belli bir türü varsa bunu getiriliyor olan veri türünü yansıtır öyle adlandırma düşünün.

Kodunuzda dayanarak bunu sonuca dönmek yerine veritabanı sınıfının bir özelliği olarak ayarlamak için mantıklı düşünüyorum. Bir veritabanı (sanki bağlantı) onun ömrü boyunca birden fazla sonuç setleri olacak. Eğer aynı nesneyi kullanarak birden sorguları yapmak için gidiyoruz eğer bir sınıf özelliği olarak sonucu ayarı oldukça mantıklı değil.

Ben özellik Database ait düşünüyorum, bu yüzden aşağıdakilerden birini yapmayın:

  1. gibi sorgu dönüş
  2. dönmek bir QueryObject zaten sorgu ile ayarlamak, ancak sorgu sonucu gerçekleştirmek için size ek yöntemler verir (ki örneğin: pagination, filtreleme)

Daha iyi bir sınıf yapısı için, sana bakmak öneririm:

PHP Dependency Injection

Bu takip etmek isteyebilirsiniz en uygun yaklaşım cevaplar.