
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-2 15:41:13 +08:00 @xxbutoo #3 好多年不写 php 了,年轻时我也喜欢各种语法糖,觉得简便,现在我只求各种语法糖越少越好,一是用过的语言太多了,根本记不住这种细节,二是编码风格不统一,没了语法糖,虽然选择少了,但至少不是一个人一种代码风格了 |
10 GG668v26Fd55CP5W 2021-03-23 17:08:35 +08:00 via iPhone 区别是第二种变量不能复用了呗 |
14 lyhiving 2021-04-29 22:22:00 +08:00 最讨厌研究这个的,都是小细节,少个字符真会省很多么? PHP 语法尽量标准写就是了,凡是考这个题目的基本上都不会太总是业务逻辑 |