class A
{
function f()
{
return 2;
}
}
/* exp1 */
$a = new A();
var_dump($a->f());
/* exp2 */
var_dump((new A)->f());
第二种语法糖 官网有文档 但是都是英文滴 也没看懂啥区别 谷歌嘛也找了找 没找到答案 v2 有大佬讲解下嘛
1
Jat001 2021-03-23 15:30:47 +08:00
这不是没区别吗……你都说语法糖了,让你少写个赋值
第二个示例写错了吧,应该是 var_dump((new A())->f()); |
2
kosgug 2021-03-23 15:32:40 +08:00
这不就是 `new A()` 和 `new A` 的区别,所以就是是否要往里边加参数的区别,没参数一样
|
5
RickyC 2021-03-23 15:37:10 +08:00
new 对象时, ()里的参数对应的是构造函数的参数;
构造函数不需参数, 则不用带括号. 示例如下: ``` <?php class A { function __construct($name) { echo 'hi' . $name; } function f() { return 2; } } $a = new A('Tom'); var_dump($a->f()); $b = new A; //报错 var_dump($b->f()); $c = new A(); //报错 var_dump($c->f()); ``` |
7
Jat001 2021-03-23 15:41:13 +08:00
@xxbutoo #3 好多年不写 php 了,年轻时我也喜欢各种语法糖,觉得简便,现在我只求各种语法糖越少越好,一是用过的语言太多了,根本记不住这种细节,二是编码风格不统一,没了语法糖,虽然选择少了,但至少不是一个人一种代码风格了
|
10
falcon05 2021-03-23 17:08:35 +08:00 via iPhone
区别是第二种变量不能复用了呗
|
14
lyhiving 2021-04-29 22:22:00 +08:00
最讨厌研究这个的,都是小细节,少个字符真会省很多么?
PHP 语法尽量标准写就是了,凡是考这个题目的基本上都不会太总是业务逻辑 |