2015-03-07 29 views
6

Bu 2 kod parçası arasındaki fark nedir?Parantez ile örnekleme veya olmadan arasında bir fark var mı?

<?php 

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

?> 

Ve:

$object1=new User; 
+6

Hiçbir fark yoktur .... kurucuya herhangi bir bağımsız değişken iletmeniz gerekiyorsa, yalnızca yeni bir sınıf örneğini başlatırken köşeli ayraçlara gereksinim duyarsınız ... kişisel olarak, her zaman köşeli parantezleri kullanmayı tercih ederim, çünkü bu satırı destekliyor editörümde daha iyisi –

+0

İlk olarak isteğe bağlı parantezleri kullandınız. Neden bir PHP kitap okumuyorsun .. –

+0

@TonyHopkinson aslında ben kitap okumak ve bazen kodları bazen yazar ve bazen değil, PHP kitap okuyor gördüm fark ne düşündüm – BsD

cevap

18

: Ben parantez veya değil kullanırsanız

Hello 

Yani herhangi bir fark yoktur:

<?php 

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

?> 

aynı çıktıyı almak Tam olarak aynı, bu 2 betiğin kodlarını karşılaştırabilirsiniz :

1 komut dosyası:

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

işlem kodu:

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 komut dosyası:

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

işlem kodu:

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

Kesinlikle bir CEVAP olan vld –

+0

arasındaki farkları göstermek için bir bonus! En az 30 karaktere sahip olmakta zorluk çekerim :) –

+1

Opcode'u nasıl görebilirim? – BsD

0

Her ikisi de eşittir. Eğer herhangi bir kod sözleşmesi kullanmıyorsanız o zaman kullanın. $object1 = new User()'un $object1 = new User üzerinden yararlı olacağını düşünüyorum. yapıcıya argümanlar geçiyor olsaydınız.

İlgili konular