
<?php /** * Class Person */ class Person { public function getName1() { static $name = false; if ($name === false) { $name = "张三"; } return $name; } private $_name = false; public function getName2() { if ($this->_name === false) { $this->_name = "张三"; } return $this->_name; } } 在不考虑其他情况下,getName1和getName2可有区别??
1 JKeita Mar 30, 2021 第一种情况,很可能被人喷。 |
2 eason1874 Mar 30, 2021 getName2 是设为内部值,内部其他方法还是可以改的,重新实例化 Person 也会重置它。 getName1 是把值存起来了,改不了了,就算你重新实例化 Person 也改不了了。 |
3 justseemore Mar 30, 2021 @JKeita 不会被人喷。。估计会被人打。。 |
4 InternetExplorer Mar 30, 2021 第一种会增加以后找 bug 的时间 |
5 FaceBug Mar 30, 2021 getName1 直接 return '张三'就好了,整一堆没用的活儿 |
6 dushixiang Mar 30, 2021 有种 95 年咖啡的味道 |
7 CodeCodeStudy Mar 30, 2021 函数内部的 static 就是个黑箱子,外面是看不到里面的,而且函数退出后该 static 变量依然存在。 |
8 Rache1 Mar 30, 2021 一个属于实例,一个属于全局 |
9 CODEWEA Mar 30, 2021 变量属于函数,变量属于类 |