<?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 2021-03-30 15:07:17 +08:00
第一种情况,很可能被人喷。
|
2
eason1874 2021-03-30 15:12:41 +08:00 1
getName2 是设为内部值,内部其他方法还是可以改的,重新实例化 Person 也会重置它。
getName1 是把值存起来了,改不了了,就算你重新实例化 Person 也改不了了。 |
4
InternetExplorer 2021-03-30 15:19:43 +08:00 1
第一种会增加以后找 bug 的时间
|
5
FaceBug 2021-03-30 15:20:57 +08:00
getName1
直接 return '张三'就好了,整一堆没用的活儿 |
6
FreeEx 2021-03-30 15:26:03 +08:00
有种 95 年咖啡的味道
|
7
CodeCodeStudy 2021-03-30 15:30:11 +08:00
函数内部的 static 就是个黑箱子,外面是看不到里面的,而且函数退出后该 static 变量依然存在。
|
8
Rache1 2021-03-30 17:47:41 +08:00
一个属于实例,一个属于全局
|
9
CODEWEA 2021-03-30 19:00:39 +08:00
变量属于函数,变量属于类
|