PHP Nesne dönüş değeri

4 Cevap php

Şu anda PHP'nin PDO sınıfının biraz kullanan bir veritabanı sınıfı programlama değilim, ama ben biraz daha kolay, belirli bir uygulama programlama yapmak için bazı basit özellikler eklemek istiyorum.

Ben nereye gidiyorum şimdi sahte kod aşağıdaki parça görebilirsiniz. Bu örnekte tek sorun $ sonuç değişkeni Ben komut ileride yapıyorum bazı şeyler comparisation için kullanılamaz bir nesne, olmasıdır:

<?php

class Database
{
    public function FetchRow ( $query )
    {
        // .. do some stuff, and make a $result variable
        return DatabaseStatement ( $result );
    }
}

class DatabaseStatement
{
    private $result;

    public function __construct ( $query )
    {
        // .. save result in property etc.
    }

    public function __get ( $column )
    {
        // .. check result item

        return $this -> result [ $column ];
    }
}

$db     = new Database;
$result = $db -> Query ( 'SELECT * FROM users WHERE id = 1;' );

if ( $result != null ) // Here $result should be an array OR null in case no rows are returned
{
    echo $result -> username; // Here $result should call the __get method
    echo '<pre>' , print_r ( $result ) , '</pre>'; // Here $result should be the array, cause it wasn't null just yet
}

Eğer ben bir comparisation yapıyorum zaman $ sonuç değişkeni bir nesne olmamalıdır görebileceğiniz gibi, ben __ toString kullanarak bir dize yapılabilir biliyorum. Ama diğer bazı tip, çoğunlukla bir dizi veya null olmak istiyorum.

O (mümkün olmalıdır ben çok güçlük ile düşünmek) mümkün ise nasıl ben çalışma gibi bir şey almak mı?

Yani biri bana doğru yönde işaret edebilir, ya da muhtemelen çalışması gerekir kodu bir parça vermek ya da benim şimdiki sınıfa girmekte değiştirebilirsiniz?

4 Cevap

Ben size DatabaseStatement oluşturmak aynı yerde yapmak zorunda düşünüyorum. Yani örneğin:

public function FetchRow($query)
{
    // ... do some stuff, and make a $result variable.
    $ds = DatabaseStatement($result);
    if ($ds) {
        return $ds;
    }
    else {
        return null;
    }
}

Bu sadece ne istediğinizi yapmak bazı yöntemler eklemek gerekiyor gibi geliyor bana. Bunun yerine boş olup olmadığını kontrol etmek için bir dizi veya boş olması $ sonuç nesne zorlayarak, neden sadece oluşturmak ve bilmek istediğiniz ne söyler bir yöntemi isEmpty () aramıyorsun?

Ve bir dizi gerekiyorsa, ne istediğinizi döndüren bir yöntem toArray () oluşturun. OR, hatta daha iyi, nesne Standard PHP Library gelen yineleyici ve / veya ArrayAccess uygulamak olun.

Bu mümkün değil. PHP operatörleri aşırı izin vermez.

PDOStatment sınıfını kullanın ve rowCount özellik bulunuyor.