2015-03-07 8 views
6

कोड के इन 2 टुकड़ों के बीच क्या अंतर है?क्या ब्रांड्स के साथ तत्कालता के बिना कोई अंतर है?

<?php 

    $object1 = new User(); 
        //^^ 
    $object1->name = "Hello";   
    echo $object1->name; 
    class User {} 

?> 

और:

$object1=new User; 
+6

कोई फर्क नहीं पड़ता .... आपको केवल नए वर्ग के उदाहरण को तत्काल करने पर ब्रैकेट की आवश्यकता होती है यदि आपको कन्स्ट्रक्टर को कोई तर्क पारित करने की आवश्यकता है ... व्यक्तिगत रूप से, मैं हमेशा ब्रैकेट का उपयोग करना पसंद करता हूं, क्योंकि यह लाइन स्टैंड बनाता है मेरे संपादक में बेहतर –

+0

पहले में आपने वैकल्पिक कोष्ठक का उपयोग किया है। आप एक PHP पुस्तक क्यों नहीं पढ़ते .. –

+0

@ टोनी होपकिन्सन वास्तव में मैं PHP पुस्तक पढ़ रहा हूं और कभी-कभी लेखक माता-पिता का उपयोग करता हूं और कभी-कभी ऐसा नहीं करता, मैंने सोचा कि अंतर क्या है – BsD

उत्तर

18

:

Hello 

तो वहाँ कोई अंतर अगर मैं कोष्ठकों या में नहीं उपयोग करते हैं:

<?php 

    $object1 = new User; 
        //^ 
    $object1->name = "Hello";   
    echo $object1->name; 
    class User {} 

?> 

मैं एक ही आउटपुट प्राप्त बिल्कुल वही हैं, आप इन 2 स्क्रिप्ट के ओपोड की तुलना कर सकते हैं :

1 स्क्रिप्ट:

$object1=new User(); 
$object1->name="Hello";   
echo $object1->name; 
class User {} 

opcode:

line  # * op       fetch   ext return operands 
--------------------------------------------------------------------------------- 
    3  0 > FETCH_CLASS         4 :0  'User' 
     1  NEW            $1  :0 
     2  DO_FCALL_BY_NAME        0   
     3  ASSIGN             !0, $1 
    4  4  ASSIGN_OBJ            !0, 'name' 
     5  OP_DATA             'Hello' 
    5  6  FETCH_OBJ_R          $5  !0, 'name' 
     7  ECHO              $5 
    6  8  NOP              
     9 > RETURN             1 

2 स्क्रिप्ट:

$object1=new User; 
$object1->name="Hello";   
echo $object1->name; 
class User {} 

opcode:

line  # * op       fetch   ext return operands 
--------------------------------------------------------------------------------- 
    3  0 > FETCH_CLASS         4 :0  'User' 
     1  NEW            $1  :0 
     2  DO_FCALL_BY_NAME        0   
     3  ASSIGN             !0, $1 
    4  4  ASSIGN_OBJ            !0, 'name' 
     5  OP_DATA             'Hello' 
    5  6  FETCH_OBJ_R          $5  !0, 'name' 
     7  ECHO              $5 
    6  8  NOP              
     9 > RETURN             1 
+3

vld –

+0

के साथ मतभेदों का प्रदर्शन करने के लिए निश्चित रूप से एक बोनस जो एक उत्तर है! मुझे न्यूनतम 30 अक्षरों को पूरा करने में कठिनाई होगी :) –

+1

मैं ओपोड कैसे देख सकता हूं? – BsD

0

दोनों बराबर हैं। यदि आप किसी भी कोड सम्मेलन का उपयोग नहीं करते हैं तो आप जिस चीज को पसंद करते हैं उसका उपयोग करें। मुझे लगता है कि $object1 = new User()$object1 = new User पर उपयोगी होगा। अगर आप कन्स्ट्रक्टर के लिए तर्क पारित कर रहे थे।

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