2016-01-05 6 views
10

मैं यह पता लगाना चाहता हूं कि कोई चर संग्रह है या नहीं।लार्वेल: पता लगाएँ कि परिवर्तनीय संग्रह है

मैं is_object() का उपयोग नहीं कर सकता क्योंकि यह एक संग्रह नहीं होने पर भी सत्य होगा। अभी के लिए मैं इस का उपयोग करें, और यह काम करता है:

if(is_object($images) && get_class($images) != 'Illuminate\Database\Eloquent\Collection') { 

लेकिन मुझे लगता है यह बहुत बदसूरत है कि मैं एक और समाधान के बारे में आप पूछ समय बिताते हैं।

क्या आपके पास कोई विचार है?

+0

मैं इसे एक सहायक समारोह में निकालेगा (चयन) (जब भी आवश्यक हो) इसका उपयोग करें। –

+3

संभावित डुप्लिकेट [क्या मैं जांच सकता हूं कि कोई वस्तु PHP में एक विशिष्ट वर्ग की तरह है?] (Http://stackoverflow.com/questions/1965722/can-i-check-if-an-object-is-kind -of-a-specific-class-in-php) – Bogdan

+1

संभावित डुप्लिकेट [PHP में ऑब्जेक्ट के विशिष्ट प्रकार के लिए कैसे जांचें] (http://stackoverflow.com/questions/8091143/how-to-check-for -a-specific-type-of-object-in-php) – patricus

उत्तर

13

आप

if(is_a($images, 'Illuminate\Database\Eloquent\Collection')) { 
    ....do whatever for a collection.... 
} else { 
    ....do whatever for not a collection.... 
} 

या

if ($images instanceof Illuminate\Database\Eloquent\Collection) { 

} 
+2

'is_a' रहा है PHP 5.0 के बाद से बहिष्कृत, इसलिए यह काम कर रहा है, यह सबसे अच्छी सलाह नहीं है। – Bogdan

+0

अजीब। यह अभी भी इसे PHP 7 में सूचीबद्ध करता है: http://php.net/manual/en/function.is-a.php यह इसे बहिष्कृत के रूप में सूचीबद्ध करता है। मेरी गलती। –

+3

@Bogdan 'is_a' को 5.0.0 में बहिष्कृत किया गया था, लेकिन इसे 5.3.0 के रूप में बहाल किया गया था (अब बहिष्कृत नहीं किया गया था)। हालांकि, इतिहास दिया गया है, मैं अभी भी 'is_a'' पर 'exampleof' की अनुशंसा करता हूं। इसके अलावा, यह थोड़ा बेहतर IMHO पढ़ता है। – patricus

4

बस एक त्रुटि मैं इस जवाब पर में भाग को सही करने और उसका उपयोग नहीं किया जा सका।

ध्यान दें कि instanceof excepts या तो एक (obj) या उद्धरण चिह्नों के बिना क्लास का नाम

$images instanceof Illuminate\Database\Eloquent\Collection 

इसके अलावा, काफी दिलचस्प है वहाँ एक गति/प्रदर्शन instanceofis_a से अधिक का उपयोग करते हुए अंतर है, लेकिन यह शायद प्रासंगिक नहीं है आपके लिए यदि आप मेरे जैसे हैं और पहली बार इस प्रश्न का उत्तर खोज रहे थे।

+0

काम करने के लिए 'रोशनी \ डेटाबेस \ Eloquent \ संग्रह' पर उद्धरणों को हटाना पड़ा था .. उत्तर –

5

उपयोग की जाने वाली कक्षा यहां गलत है। एक सामान्य अर्थ में, आपको बेस क्लास के लिए परीक्षण करना चाहिए।

use Illuminate\Support\Collection; 

.... 
if($images instanceof Collection) { 
.... 
} 
+1

यह एकमात्र सही उत्तर है। –

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