/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
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), '"'), ':')
));
}
Dönüştürme bir nesne bir dize için...
Dönüştürme gerçek nesne için bir proxy...
Daha temiz bir yaklaşım için pek çok &...
Bir Tarih dönüştürme takvim bir nesne ...
Daha iyi bir şekilde jquery ile nesne ...