PHP Note
Table of Contents
#
PHP Note
##
Notice
- 處理 db 的部分放到 model 處理來增強可用性
- 減少邏輯判斷
- 以錯誤為優先處裡
##
array to string
<?php
$arr = array(
'val' => 1,
'str' => 'string',
);
$to_string = serialize($arr);
echo $to_string;
// a:2:{s:3:"val";i:1;s:3:"str";s:6:"string";}
$to_array = unserialize($to_string);
var_dump($to_array);
/* not better
* if $to_string can't unserialize, it has PHP error
*/
?>
##
coding style
在 PHP 中有許多邏輯判斷 當有許多條件要去檢查時, 一般來說就是用 if 一直寫下去 最後就造成下面的情況
if ($a === $b)
{
if ($c)
{
if ($c >= 10)
{
if ($d)
{
// do something
// ...
}
return;
}
return;
}
}
這樣下去就沒完沒了, 而且縮排會越來越多, 要看 code 也很不方便 所以假如就已作條件檢查來說 可以用以下的做法
// check condition 1
if ($a !== $b)
{
return;
}
// check condition 2
if (!$c || $c === '')
{
return;
}
// check condition 3
if ($c < 9)
{
return;
}
// check condition 4
if (!d)
{
return;
}
// do something
// ...
做個 反向思考 , 把不適合的條件列出再一一 return or 作處理 剩下的便是所需要的
有時也會遇到應該用 switch 卻用 if 去一直加下去的情況 所以當 if 用到 3 個 以上時, 就要思考要用什麼敘述來達到目的比較好
##
htmlspecialchars
在輸出資料時在 HTML 呈現會有特殊字元或跳脫字元甚至把 script 輸出執行的問題 所以在輸出的資料是使用者輸入的, 就必須用 htmlspecialchars 包起來
<?php
htmlspecialchars($string);
?>