Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带括号的实例化与不带括号的实例化有区别吗?_Php_Oop_Instance - Fatal编程技术网

Php 带括号的实例化与不带括号的实例化有区别吗?

Php 带括号的实例化与不带括号的实例化有区别吗?,php,oop,instance,Php,Oop,Instance,这两段代码之间有什么区别 <?php $object1 = new User(); //^^ $object1->name = "Hello"; echo $object1->name; class User {} ?> 那么,如果我使用括号或不使用括号,有什么区别吗 $object1=new User; 它们完全相同,您可以比较这两个脚本的操作码: 1个脚本: $objec

这两段代码之间有什么区别

<?php

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

?>
那么,如果我使用括号或不使用括号,有什么区别吗

$object1=new User;

它们完全相同,您可以比较这两个脚本的操作码:

1个脚本:

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

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
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脚本:

操作码:

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
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

两者都是平等的。如果您不使用任何代码约定,请使用您喜欢的。我认为$object1=新用户比$object1=新用户更有用。如果您将参数传递给构造函数。

没有任何区别……如果您需要将任何参数传递给构造函数,则在实例化新类实例时只需要括号。。。就我个人而言,我更喜欢总是使用括号,因为它使这一行在我的社论中更加突出——第一篇你使用可选括号的社论。你为什么不读一本PHP书呢?@TonyHopkinson实际上我在读PHP书,看到了一些代码示例,有时作者使用了parens,有时不是,我想有什么不同,没有括号=没有参数,空括号=没有参数。如果您将编程语言视为用户界面,那么设计者不希望强迫您一直使用空的,或者永远不要使用空的。编程的一个非常重要的部分是意图。通过以这种方式对解析器进行编码,设计者使其在形式上而不是实质上有所不同。哦,如果这是一本像样的书,它应该能够回答你的问题。@TonyHopkinson学习PHP、MySQL和JavaScript:Robin Nixonde的jQuery、CSS和HTML5第四版有限地证明了与VLD的差异这是一个答案!我很难满足最少30个字符的要求:查看操作码需要一个特殊的扩展名@BsD,正如Mark Baker所说,您需要这个扩展名^