2014-11-13 15 views
5

का एक उदाहरण है आम तौर पर आप इसे एक चर एक वर्ग का एक उदाहरण है कि क्या जांच करने के लिए का उपयोग करके संभव है:चेक अगर कुछ ArrayCollection

$foo instanceof bar 

लेकिन ArrayObjects के मामले में (Symfony 2 का होता है), इस

get_class($foo) रिटर्न 'Doctrine\Common\Collections\ArrayCollection'

अभी तक

$foo instanceof ArrayCollection 
काम करने के लिए प्रतीत नहीं होता 10

रिटर्न false

is_array($foo) रिटर्न false और $is_object($foo) रिटर्न true

लेकिन मैं इस प्रकार पर एक विशेष जांच करना पसंद

+0

क्या आप इसे एक फॉर्म के साथ उपयोग कर रहे हैं? –

+0

हाँ मैं इसे एक फॉर्म निर्माता में उपयोग कर रहा हूं – JackalopeZero

उत्तर

12

एक namespace के तहत एक वस्तु का आत्मनिरीक्षण करने के लिए होता है, वर्ग अभी भी जरूरत है use निर्देश का उपयोग करके शामिल किया जाना है।

use Doctrine\Common\Collections\ArrayCollection; 

if ($foo instanceof ArrayCollection) { 

} 

या

if ($foo instanceof \Doctrine\Common\Collections\ArrayCollection) { 

} 

निर्धारित करने के लिए वस्तुओं is_array($foo) साथ एक सरणी के रूप में उपयोग आपके प्रयास के बारे में।

फ़ंक्शन केवल array प्रकार पर काम करेगा।

/* 
* If you need to access elements of the array by index or association 
*/ 
if (is_array($foo) || $foo instanceof \ArrayAccess) { 

} 

/* 
* If you intend to loop over the array 
*/ 
if (is_array($foo) || $foo instanceof \Traversable) { 

} 

/* 
* For both of the above to access by index and iterate 
*/ 
if (is_array($foo) || ($foo instanceof \ArrayAccess && $foo instanceof \Traversable)) { 

} 

ArrayCollection वर्ग इन इंटरफेस के दोनों लागू करता है: लेकिन अगर यह एक सरणी के रूप में इस्तेमाल किया जा सकता है, तो आप उपयोग कर सकते हैं की जाँच करने के।

संबंधित मुद्दे