
写代码的时候,总是习惯像其他语言一样实现声明下变量(给默认值),比如,我知道$age 是表示年龄的话,我就会:
$age = 0;
好处:
1. 当没有给这个变量赋值,而返回这个变量时会有一个默认的值.
2. 条理更加清晰
坏处:
1. 变量多的时候,会导致有一长串的变量声明
不知道各位有没有这个习惯,怎么看?
1 shidenggui Sep 7, 2015 不能链式赋值? `$v1 = $v2 = $v3 = 0;` |
2 bdbai Sep 7, 2015 via iPhone 莫名其妙蹦个变量出来会很诡异。 |
3 raincious Sep 7, 2015 你是说变量集体初始化操作?比如 $currentTime = $nextTime = $expireTime = 0; 这样的? 我原先也这么写,直到 PHPStorm 告诉我这样不对,因为有些变量会被直接覆盖,就像: $currentTime = 0; $currentTime = time (); 所以还是按需初始化比较好。 |
4 slayerdoomsday Sep 7, 2015 个人觉得初始化变量应该是个好习惯吧,尤其是声明数组的时候。 |
5 blue7wings OP @raincious 我也是这么认为...首先分开写美观点嘛.. |
6 kookxiang Sep 7, 2015 via Android 不需要,因为变量有作用域。 声明变量主要是以前 register global 的时候才用的吧 |
7 konakona Sep 7, 2015 类成员最好先声明,方法变量则按需声明,比如说: function imafunc ($arr ){ $times = []; foreach ($arr as $row ){ $times[] = $row['created_at']; return $times; } } 只用一次的变量我会在用之前声明。 还有: function imsolong (){ $times = []; $peoples = []; $activites = []; ...//大约 10 行代码,这里是一个逻辑块,所要用到的变量会在逻辑快之前先统一初始化,告诉别人我接下来要用到这些,我顺便可以在初始化的时候写上注释,告诉别人这是干什么的。 } |
8 taris17 Sep 7, 2015 是个好习惯,但是不是必须 因为 PHP 不像 Javascript ,有作用域链。 而且你可以认为每个变量的初始值是 null ,不确定是否初始化,则可以用 isset 来判断。 |
9 zts1993 Sep 7, 2015 严谨的说是要的,,但是既然准备图省事那就不用了。。 |
10 lzxgh621 Sep 7, 2015 via Android Notice: Undefined index |
11 jhdxr Sep 7, 2015 不确定楼主所说的『变量声明』是指什么。 `$age = 0`在我看来做了两件事情:声明`$age`的存在,和对`$age`进行赋值为零。 如果你说的仅仅是前者,我认为是不必要的。只需要确保在使用一个变量前,一定对它进行过赋值即可。 实际上在*使用*未声明的变量的时候, php 同样会抛出一个 notice 。 例如, ``` <?php echo $undefined_var; ``` >Notice: Undefined variable: undefined_var in R:\a.php on line 2 |
12 jhdxr Sep 7, 2015 嗯。。。顺便问下怎么贴代码的。。。好像 markdown 在这儿不管用。。。 |
14 Caringor Sep 8, 2015 不一定要,不我的是了。 |
15 Zzzzzzzzz Sep 8, 2015 旧 php 版本存在 magic_quotes_gpc 并且为 on 的情况下不初始化变量有可能会导致安全问题, 只考虑最近版本的话用到可能未赋值的变量 isset 或者 empty 够了, 不过这类判断写多了也挺烦的. |
16 cxbig Sep 8, 2015 一般使用不需要 如果是判断里赋值,判断后使用,考虑在判断前加一个初始值 数组内特殊 index 最好先赋值 类属性空值( null, array (), ...)不用赋值。 |
17 arka Sep 8, 2015 不声明在解析器严格模式就会报错。如果在 nginx fastcgi 下还可能白屏。找不到错误 |
18 LaughingMeMe Sep 8, 2015 intNUM,arrData..and so on... |
19 jianghu52 Sep 8, 2015 初始化还是很有必要的。在很多时候你初始化一个奇怪的变量,一出错很容易就能看的出来。 |
21 ConteMan Sep 8, 2015 我觉得初始化的左作用大于声明的意义 |
22 Roope Sep 8, 2015 一般变量我都会初始化。特别是数组。 |