:::

6-4-2 將別的地方也會用到的功能也做成函式

  1. 取得縮圖的部份,還有取得摘要的部份,未來在別的地方或許也會用到,因此,也可以獨立做成函式。
  2. 例如縮圖部份可以取出,做成 get_thumbs(),不過因為路徑需要用到文章編號,所以,設定一個$id參數以便讓文章編號傳入函式中使用,如:
    // 取得縮圖
    function get_thumbs($id)
    {
        // 原檔目錄
        $dir = _PATH . "/uploads/{$id}/";
        // 縮圖目錄
        $thumb_dir = _PATH . "/uploads/{$id}/thumbs/";
        // 初始該文章包含的檔案
        $files = [];
        // 若該目錄存在的話
        if (is_dir($dir)) {
            // 就開啟該目錄
            if ($dh = opendir($dir)) {
                // 讀取底下所有檔案
                while (($file = readdir($dh)) !== false) {
                    // 只抓出檔案(不要目錄)
                    if (filetype($dir . $file) != 'dir') {
                        // 取得副檔名
                        $ext = pathinfo($file, PATHINFO_EXTENSION);
                        // 若副檔名是mp4,就將縮圖副檔名取代改為 jpg
                        $files[$file] = ($ext == 'mp4') ? str_replace('.mp4', '.jpg', $file) : $file;
                    }
                }
                closedir($dh);
            }
        }
        return $files;
    }

    可將原本內容中的 $news['files'] 改為 $files$news['id'] 改為 $id 並將最後的陣列 return 出來即可。

  3. 接著將摘要部份也取出,做成 get_summary(),因為摘要需要用到文章內容,所以,設定一個 $content 參數以便讓文章內容傳入函式中使用,如:
    // 製作摘要
    function get_summary($content)
    {
        // 若是本文超過設定字數就加上...
        $more = mb_strlen($content) > _SUMMARY_COUNT ? '...' : '';
        // 產生摘要
        $summary = mb_substr($content, 0, _SUMMARY_COUNT) . $more;
        return $summary;
    }

    可將原本內容中的 $news['content'] 改為 $content,最後 return 出整理後的 $summary 即可。

  4. 最後只要在index()中分別呼叫這兩個函數並傳入對應的參數即可,如此程式的可閱讀性更高,如:
    // 列出所有文章
    function index($p)
    {
        global $db;
        ...略...
        while ($news = $sth->fetch(PDO::FETCH_ASSOC)) {
            // 取得縮圖
            $news['files'] = get_thumbs($news['id']);
            // 產生摘要
            $news['summary'] = get_summary($news['content']);
            // 過濾整個陣列
            $news = filter_var_array($news, FILTER_SANITIZE_STRING);
            $all_news['data'][] = $news;
        }
        return $all_news;
    }
    
    // 取得縮圖
    function get_thumbs($id)
    {
        ...略...
        return $files;
    }
    
    // 製作摘要
    function get_summary($content)
    {
        ...略...
        return $summary;
    }

     


:::

書籍目錄

展開 | 闔起

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

計數器

今天: 4046404640464046
昨天: 5069506950695069
總計: 5134494513449451344945134494513449451344945134494