:::

6. 把程式片段打包成函數

一、關於函數

  1. 函數有兩種,一組是PHP內建函數,另一種是自訂的函數。
  2. 一個函數通常都有其獨特的功能,可視為具特定功能的小零件,直接呼叫使用即可,如:phpinfo(),有些有傳回值,有些沒有;有些需要輸入參數,有些不用。
  3. 完整函數手冊:http://www.php.net/manual/en/funcref.php
  4. 函數基本結構:傳回值 函數名稱(參數1,參數2...);
  5. 函數傳回值有:string(字串)、int(整數)、array(陣列)、object(物件)、bool(布林值)、void(無傳回值)、mixed(不一定)、new(建立物件)

二、自訂函數

  1. 自訂函數的基本語法為:
    function 函數名稱($參數1='預設值' , $參數2='預設值',...){
    	global $外面的變數;
    	函數內容,任何有效的 PHP 程式碼,包括其它函數和class定義 ;
    	return 傳回值;
    }
  2. 參數不見得要有,傳回值也不一定要有。
  3. 例如把登入做成函數:
    function login()
    {
        require_once "config.php";
        $name   = isset($_POST['name']) ? filter_var($_POST['name'], FILTER_SANITIZE_SPECIAL_CHARS) : '';
        $passwd = isset($_POST['passwd']) ? $_POST['passwd'] : '';
        if ($name == $admin_id and $admin_pass == $passwd) {
            $_SESSION['group'] = 'admin';
            $_SESSION['name']  = $name;
        }
    }
  4. 超級全域變數可直接在函數中使用,外面的一般變數無法進到函數中,除非做成參數或是用 global 宣告。
  5. 當然,函數裡面的變數外面也無法取用,除非return出去。
  6. 函數放在檔案中任何地方都可以,放在呼叫之前或之後都沒關係。
  7. 要使用時,呼叫之即可
    switch ($op) {
        case 'login':
            login();
            header("location:{$_SERVER['PHP_SELF']}");
            exit;
    
        case "logout":
            header("location:{$_SERVER['PHP_SELF']}");
            exit;
    
        default:
            # code...
            break;
    }

     

 三、練習:

  1. 請把登出也做成函數

:::

書籍目錄

展開 | 闔起

快速登入


http%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbdsn%3D720%26tbsn%3D27

計數器

今天: 2432243224322432
昨天: 4159415941594159
總計: 8069950806995080699508069950806995080699508069950