on 2013-08-30

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);

?>

curl

PHP CURL詳解