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所说,您需要这个扩展名^