Tefrika Nesneler denetleniyor

3 Cevap php

Belirli bir oturum değişkeni bir serileştirilmiş nesne olup olmadığını bilmek için yerleşik bir yolu var mı? Ben $ _SESSION ['foo'] gibi bir değer almak, ancak bir serileştirilmiş nesne ise ben aslında bir dize olup olmadığını da bilmiyorum demek. Kontrol etmek için bir yol var mı, ya da bir kez tefrika PHP sadece bir dize olarak bir dize olarak bir dize görüyor?

3 Cevap

Bu el oturumda koymadan önce nesneleri seri hale getirmek zorunda oldukça yaygın bir kanı var. Bu böyle değil. Siz sadece $_SESSION bir yuvaya bir nesne örneği atayabilirsiniz, ve PHP automagicallylar istekler arasında, sizin için serialize ve unserialize olacaktır.

Bir dize, bir dize, bir dize olduğunu. Ben yapmanız mümkün olacak en iyi sadece nesneleştirmek deneyin olduğunu düşünüyorum, ve eğer o inşaat, çalışır. Eğer bu olmuyorsa, öyle değil.

Yalnızca diğer seçenek tefrika nesne gibi "görünüyor" olmadığını görmek için bir regex kullanmak olacaktır. Sadece unserialize() üzerinde çalışıyor olsa daha kolay olabilir.

Eğer sadece kontrol etmek için classname bilmeniz gerekir, oturum dışarı çekin ve bakın ... is_a kullanabilirsiniz.

if (is_a($_SESSION['foo'], 'UserInfoObject')) {
  // We have one
}

PHP5 daha kolay bir yöntem var gibi görünüyor:

if ($_SESSION['foo'] instanceof UserInfoObject) {
      // We have one
}

http://www.php.net/manual/en/function.is-a.php