纠结 php use

2016-04-10 19:38:05 +08:00
 whatisnew

可以这样用:

use vendor\Path\Class;
// 然后方法里用:
(new Class())->method()

也可以这样用:

// 不用 use, 直接在方法里写:
(new vendor\Path\Class())->method()

其中:

// new 可以这样,带括号
(new vendor\Path\Class())->method()
// 也可以这样,不带括号:
(new vendor\Path\Class)->method()

操。。。我蹦溃了,到底要咋样???

2211 次点击
所在节点    PHP
10 条回复
sjtlqy
2016-04-10 19:41:54 +08:00
use 还是建议放在头部,函数里面用 use , tmd 挖坑
magicdawn
2016-04-10 19:43:18 +08:00
话说最好的语言不是有 psr 规范么,里面有规定 use
Lucups
2016-04-10 19:43:47 +08:00
楼主纠结癌晚期,鉴定完毕。
feiyuanqiu
2016-04-10 19:48:34 +08:00
没搞懂有什么问题, namespace 就相当于为类名加了个前缀, use 让你可以偷懒少打一串字
至于 new 的时候的括号问题,选择一种自己喜欢的 code style 并坚持用就好了,结果又没有什么差别
lianyue
2016-04-10 20:24:13 +08:00
你还不如在加个
(new \vendor\Path\Class())->method()
raincious
2016-04-10 20:31:09 +08:00
建议楼主找个 IDE 比如 PHP Storm ,瞬间解除纠结模式(因为会提示你不要使用类全名)。
orvice
2016-04-10 21:42:34 +08:00
写头部吧
xiaonianji
2016-04-10 23:57:20 +08:00
greatonce
2016-04-11 00:25:15 +08:00
(new vendor\Path\Class())->method()
1. 这样写 Class()一般是构造方法需要参数的时候用于在里面传参数的, 而 new 在括号里面表明这是一个实例,所以可以调用 method ,如果是构造方法,是不会返回实例的。

(new vendor\Path\Class)->method()
2. 这种写法可以创建一个 Class 的实例,然后调用 method ,同样 new 是在括号里面,所以 new 完后是一个实例,这样的实例无法传参给构造方法。


其实这两种没有什么太难理解的,一个是 Class() 另一个是 Class 都是在()括号里面 new ,然后得到一个实例化,多练习就可以了。
linxl
2016-04-11 00:25:53 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/269977

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX