我所理解的,不论是静态还是常规的类, 都可以使用 ::
常规类使用:: 里面不能用$this
但是还是不明白啥时候用静态?
意思是如果我这个类里面没有用到$this 都应该使用静态吗?
1
littleylv 2017-07-05 17:32:04 +08:00 2
虽然楼主隐藏了他创建的主题: https://www.v2ex.com/member/hoythan
但整个 PHP 节点里都是些什么啊: https://www.v2ex.com/go/php 最基本的,楼主可以去看看官方手册么? |
2
tabris17 2017-07-05 17:36:52 +08:00 1
什么叫静态类?楼主你明白自己在说什么吗?
|
3
aprikyblue 2017-07-05 17:37:42 +08:00
|
4
fyibmsd 2017-07-05 17:38:24 +08:00 1
RTFM
|
7
hoythan OP @littleylv php 节点本来就冷清,我吧问题整理出来一起问下都妨碍你了?伤你眼了还是伤你脑了?还是浪费你时间打字了?
|
8
hasdream 2017-07-05 18:50:18 +08:00 via Android
一个不用实例化就能调用,一个需要实例化才能调用
|
10
johnlui 2017-07-05 19:30:14 +08:00
建议楼主去 segmentfault 问基础知识
|
11
joeke 2017-07-05 19:35:09 +08:00
这个就不用在这里问了吧,查一下手册就出来了
|
13
bombless 2017-07-05 19:50:38 +08:00
有些人觉得不应该有静态方法
我的习惯是不用$this 的情况下都用静态静态方法 |
14
we3613040 2017-07-05 21:37:59 +08:00
静态方法是为了引入 function 的,而静态不能用 this,是因为他们在不同的内存里,内存模型那块,所以不能调用
|
15
Keson 2017-07-06 08:44:16 +08:00
1、不论是静态还是常规的类, 都可以使用 ::
这个是 php 我觉得误人子弟的地方,事实上静态方法用::,非静态方法用$this->。只是早期 php 不知道为什么可以混用。一些 IDE ( phpstorm )如果用错了的话会有黄色提示警告的。但是还是可以运行的。 2、常规类使用:: 里面不能用$this 应该是问“静态类使用:: 里面不能用$this ”?因为静态方法其实是只有一个副本。不会想非静态类一样可以 new 多个实例,所以在静态方法里面只能调用本类的其他静态资源(静态方法或静态变量等)。 3、但是还是不明白啥时候用静态?意思是如果我这个类里面没有用到$this 都应该使用静态吗? 跟第二个问题一样,建议楼主可以看看静态类、静态方法、静态变量等知识就懂了。 |
16
TIGERB 2017-07-06 16:36:48 +08:00
静态只能维护全局的状态,普通类的对象可以分别维护自己的状态
|
17
changwei 2017-07-06 19:08:12 +08:00
看了一下整个 PHP 节点一片火红的景象啊,全是楼主头像。。。
|