带括号和不带括号的实例化有区别吗?
Is there a difference between instantiation with parentheses or without?
这2段代码有什么区别?
<?php
$object1 = new User();
//^^
$object1->name = "Hello";
echo $object1->name;
class User {}
?>
并且:
<?php
$object1 = new User;
//^
$object1->name = "Hello";
echo $object1->name;
class User {}
?>
我得到相同的输出:
Hello
所以我用不加括号有什么区别吗:
$object1=new User;
完全一样,你可以比较这两个脚本的操作码:
1 个脚本:
$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 :0
2 DO_FCALL_BY_NAME 0
3 ASSIGN !0,
4 4 ASSIGN_OBJ !0, 'name'
5 OP_DATA 'Hello'
5 6 FETCH_OBJ_R !0, 'name'
7 ECHO
6 8 NOP
9 > RETURN 1
2 个脚本:
$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 :0
2 DO_FCALL_BY_NAME 0
3 ASSIGN !0,
4 4 ASSIGN_OBJ !0, 'name'
5 OP_DATA 'Hello'
5 6 FETCH_OBJ_R !0, 'name'
7 ECHO
6 8 NOP
9 > RETURN 1
两者是平等的。如果您不使用任何代码约定,则使用您喜欢的。我认为 $object1 = new User()
比 $object1 = new User
更有用。如果您将参数传递给构造函数。
这2段代码有什么区别?
<?php
$object1 = new User();
//^^
$object1->name = "Hello";
echo $object1->name;
class User {}
?>
并且:
<?php
$object1 = new User;
//^
$object1->name = "Hello";
echo $object1->name;
class User {}
?>
我得到相同的输出:
Hello
所以我用不加括号有什么区别吗:
$object1=new User;
完全一样,你可以比较这两个脚本的操作码:
1 个脚本:
$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 :0
2 DO_FCALL_BY_NAME 0
3 ASSIGN !0,
4 4 ASSIGN_OBJ !0, 'name'
5 OP_DATA 'Hello'
5 6 FETCH_OBJ_R !0, 'name'
7 ECHO
6 8 NOP
9 > RETURN 1
2 个脚本:
$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 :0
2 DO_FCALL_BY_NAME 0
3 ASSIGN !0,
4 4 ASSIGN_OBJ !0, 'name'
5 OP_DATA 'Hello'
5 6 FETCH_OBJ_R !0, 'name'
7 ECHO
6 8 NOP
9 > RETURN 1
两者是平等的。如果您不使用任何代码约定,则使用您喜欢的。我认为 $object1 = new User()
比 $object1 = new User
更有用。如果您将参数传递给构造函数。