:::

5-6 加入 switch 流程控制

一、關於 switch

  1. 文章標題有個連結為:
    <h3><a href="index.php?op=show&id={$news.id}">{$news.title}</a></h3>

    亦即點下此連結,就會分別傳送 $_GET['op']$_GET['id'] 兩個變數給 index.php 之意

  2. 取得外來變數的第一個動作便是要過濾之,如:
    <?php
    use yidas\data\Pagination;
    
    require_once 'header.php';
    
    // 變數過濾
    $id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;
    $op = isset($_REQUEST['op']) ? htmlspecialchars($_REQUEST['op']) : 'index';

    $op 的預設值將之設為 index,也就是要顯示文章列表之意,目前雖然設也沒關係,但等到要引入樣板檔時就一定要有一個預設值才行。

  3. 既然我們已經可以取得自訂的 $op 變數,也就是用來告知程式接下來要做什麼,那麼,我們就可以用switch() 來做流程控制
  4. switch() 的基本用法:
    switch($變數名稱){
        case "值1":
            執行動作1;
            break;
    
        case "值2":
            執行動作2;
            break;
    
        default:
            預設執行動作;
            break;
    }

     

  5. 注意,若是沒有寫 break;,那麼會繼續往下執行。

二、加入 switch 流程控制

  1. index.php為例,可改這樣:
    <?php
    use yidas\data\Pagination;
    require_once 'header.php';
    
    // 變數過濾
    $id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;
    $op = isset($_REQUEST['op']) ? htmlspecialchars($_REQUEST['op']) : 'index';
    
    switch ($op) {
        // 觀看單一文章
        case 'show':
            $smarty->assign('news', show($id));
            break;
    
        // 預設為文章列表
        default:
            list($all_news, $paginator) = index($perPage);
            $smarty->assign('all_news', $all_news);
            $smarty->assign('paginator', $paginator);
            break;
    }

     

    1. 我們將所有的函式都移到下方,如此,上方比較容易看出整個檔案的流程
    2. 等一下我們再來產生 show($id) 函式即可
    3. 如此一來,以後我們就可以用 $op 來告知同一個檔案,讓該檔案可以執行各種不同的動作。
    4. 至此,只要畫面沒有變化,那就是做對了。

:::

書籍目錄

展開 | 闔起

http%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D52%26tbdsn%3D1822

計數器

今天: 1556155615561556
昨天: 2198219821982198
總計: 7326414732641473264147326414732641473264147326414