SORU
14 Temmuz 2010, ÇARŞAMBA


/Başka bir sınıf için bir stdClass nesne cast dönüştürme

Ben bazı sebepsiz yere yem ne olursa olsun sadece bana stdClass nesneler döndüren üçüncü taraf bir depolama sistemi kullanıyorum. Eğer belirli bir türün tam teşekküllü bir nesne haline stdClass nesne dönüştürmek/dökme için bir yol olup olmadığını merak ediyorum.

Şuna benzer bir şey: mesela

//$stdClass is an stdClass instance
$converted = (BusinessClass) $stdClass;

Sadece bir diziye stdClass döküm ve BusinessClass kurucu yem olabilirim, ama belki de farkında değilim ilk sınıf geri yüklemek için bir yolu yoktur.

Not: 'depolama sistemi' ilgi noktası olmadığı için. cevaplar türünü Değiştirmek ilgilenmiyorum Dil üzerine akademik bir soru kapasiteleri daha düşünün lütfen.

Şerefe

CEVAP
14 Temmuz 2010, ÇARŞAMBA


Mümkün manual on Type Juggling atmalarını bakın.

Bu izin verilen tutar:

  • (int), (integer) - tamsayı için dökme
  • (bool), (boolean) boolean atın
  • (şamandıra), (çift), (real) - atama yüzer
  • (string) - string için dökme
  • (dizi) - dizi cast
  • (nesne) nesne atama
  • (Geri Al) - BOŞ döküm (PHP 5)

Başka bir beton sınıfı için stdClass gelen döküm yapan 7* *olurdu. Çok zor olmasa gerek.

Ya da, eğer hackish bir ruh halinde iseniz, aşağıdaki kodu adapte olabilir:

function arrayToObject(array $array, $className) {
    return unserialize(sprintf(
        'O:%d:"%s"%s',
        strlen($className),
        $className,
        strstr(serialize($array), ':')
    ));
}

belli bir sınıfın bir nesnesi için bir dizi pseudocasts. Bu belirli bir sınıfı temsil edecek şekilde ilk dizi seri hale getiriliyor ve daha sonra seri hale getirilmiş verileri değiştirerek çalışır. Sonuç, bu sınıfın bir örneğini sonra unserialized. Ama dediğim gibi, hackish, bekliyoruz yan etkileri çok.

Nesne nesne için kod olacaktır

function objectToObject($instance, $className) {
    return unserialize(sprintf(
        'O:%d:"%s"%s',
        strlen($className),
        $className,
        strstr(strstr(serialize($instance), '"'), ':')
    ));
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS North America

    ASUS North A

    12 AĞUSTOS 2008
  • TechXCentral

    TechXCentral

    12 Temmuz 2011
  • FF Radioo

    FF Radioo

    14 ŞUBAT 2007