Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to CodeIgniter Framework

Bo-Yi Wu
November 13, 2011

Introduction to CodeIgniter Framework

2011 Taiwan PHP conference http://phpconf.tw/2011

Bo-Yi Wu

November 13, 2011
Tweet

More Decks by Bo-Yi Wu

Other Decks in Programming

Transcript

  1. 2011/11/12 PHP Conference 3 $this->load->view('about/me')  瑞昱半導體股份有限公司  Linux Kernel

    Driver, Sencha Touch Web App.  CodeIgniter 台灣站長 http://codeigniter.org.tw  翻譯線上文件  提交 Patch 給官方 CodeIgniter  個人 Github  https://github.com/appleboy
  2. 2011/11/12 PHP Conference 5 Why use Framework?  合作方式 (

    不管你是團隊還是 Soho)  程式設計師與程式設計師  程式設計師與前端設計師  加速開發  幫你寫好一堆功能模組 ( 分頁 , 驗證碼 , 多國語系 )  幫你解決安全性問題 ($_GET, $POST ...)
  3. 2011/11/12 PHP Conference 9 初學者非用 CodeIgniter 的優勢  懶人安裝方法 

    架構清楚明瞭  繁體中文文件  基礎 MVC 架構 ( 日後可跳往其它 Framework)
  4. 2011/11/12 PHP Conference 12 真的這麼容易安裝 ?  進入下載網址  http://www.codeigniter.org.tw/downloads

     解壓縮檔案  unzip CodeIgniter_2.X.X.zip  輸入網址  http://your_host_name/codeigniter/
  5. 2011/11/12 PHP Conference 17 CodeIgniter 目錄 application ( 網站主目錄 )

    system (CodeIgniter 核心目錄 ) user_guide (CodeIgniter 使用手冊 ) index.php ( 網站主程式 )
  6. 2011/11/12 PHP Conference 19 多網站目錄架構 system ( 升級版本只需要換此目錄 ) web_01

    index.php application web_01 index.php application web_02 index.php application
  7. 2011/11/12 PHP Conference 22 必讀資料  一般主題  CodeIgniter URLs

     控制器 (Controllers)  檢視 (Views)  模型 (Models)  類別參考  Database 類別  Input 類別  Loader 類別
  8. 2011/11/12 PHP Conference 23 進階閱讀  一般主題 • 新增程式庫 (Library)

    • 新增核心類別 • Hooks – 擴充核心 • URI 路由  類別參考 • Email 類別 • File Uploading 類別 • Form Validation 類別 • Language 類別 • Output 類別 • Pagination 類別 • Session 類別
  9. 2011/11/12 PHP Conference 26 Web Server Routing Controller View Model

    Layout Database Client Browser MVC Architecture Library Helper Caching
  10. 2011/11/12 PHP Conference 28 View Controller View (views/welcome.php) <html> <body>

    Hello <?php echo $username; ?> </body> </html> Controller (controllers/welcome.php) function welcome($id) { $data[‘username’] = $id; $this->load->view(“welcome”, $data); } Hello Appleboy
  11. 2011/11/12 PHP Conference 31 CodeIgniter 內建自訂 URL 功能  $route['products/([a-z]+)/(\d+)']

    = "$1/id_$2"  products/os/1234  呼叫 os controller  傳入參數 id_1234  網站出現重大問題需要停機修復  $route['(:any)'] = "system/fix"  $route['.*'] = “system/fix”
  12. 2011/11/12 PHP Conference 33 High Performance Framework  載入 Library

     $this->load->library(array('email', 'table'));  載入 view  $this->load->view('file_name');  載入 model  $this->load->model('model_name');  載入 helper  $this->load->helper('help_name');
  13. 2011/11/12 PHP Conference 35 Cache 使用方式  Cache 可以寫在 Controller

    任意地方  $this->output->cache(n);  n 代表分鐘
  14. 2011/11/12 PHP Conference 37 CodeIgniter Cache 機制  將 time()+n*60

    寫入到 cache 檔案最前面  每次 Request 則取出跟 time() 比對時間  若 cache time > time() 直接輸出 cache file  若 cache time < time() 刪除 cache 並且新增 cache 缺點 : 適用於靜態檔案
  15. 2011/11/12 PHP Conference 38 如果用在動態檔案呢 ? 官方無提供刪除 cache 檔案函式 請自行

    Patch 程式碼 http://goo.gl/03IrZ $this->output->delete_cache('post/12') $this->output->delete_cache('post/list')
  16. 2011/11/12 PHP Conference 40 好處  CLI 去執行您的 cron-jobs 而不需要使用

    curl  互動式 "tasks" 工作 , 像是動態改變權限、清除 cache … 目錄、執行備份 等。  任意搭配其他程式 , 例如 Perl, C++, Python
  17. 2011/11/12 PHP Conference 42 避免網頁執行到 command line  將 corn-jobs

    移出 apache 可執行目錄  用 PHP 判斷,確保瀏覽器不能執行 cron-jobs  php_sapi_name() === "cli"  defined('STDIN')
  18. 2011/11/12 PHP Conference 43 處理 $_POST,$_GET 資料 if ( !

    isset($_POST['user'])) $user = FALSE; else $user = $_POST['user']; $user = (! isset($_POST['user'])) ? FALSE : $_POST['user'];
  19. 2011/11/12 PHP Conference 44 不需要這麼麻煩  $_POST 資料  $user

    = $this->input->post('user');  $_GET 資料  $user = $this->input->get('user');  一起判斷  $user = $this->input->get_post('user');  先找 $_POST['user'], 後找 $_GET['user']
  20. 2011/11/12 PHP Conference 45 避免 XSS 的攻擊  $user =

    $this->input->post('user', TRUE);  $user = $this->input->get('user', TRUE);  $user = $this->input->get_post('user', TRUE);
  21. 2011/11/12 PHP Conference 46 良好的程式設計  善用 === 做判斷 

    數字請用 intval() 或 (int) 過慮  $id = intavl($id);  $id = (int) $id;  用 is_array, is_int, is_bool, is_string 判斷類型
  22. 2011/11/12 PHP Conference 47 表單驗證  $this->form_validation->set_rules('username', ' 帳 號

    ', 'trim|required|min_length[5]|max_length[12]| xss_clean');  $this->form_validation->set_rules('password', ' 密 碼 ', 'trim|required|md5');  $this->form_validation->set_rules('email', ' 電子郵 件 ', 'trim|required|valid_email');
  23. 2011/11/12 PHP Conference 48 分頁  $this->load->library('pagination');  $config['base_url'] =

    'http://example.com/index.php/test/page/';  $config['total_rows'] = 200;  $config['per_page'] = 20;  $this->pagination->initialize($config);  echo $this->pagination->create_links();
  24. 2011/11/12 PHP Conference 49 Email 寄信  多重協定 : Mail

    , Sendmail , and SMTP  多重收件人  副本 (CC) 和密件副本 (BCCs)  支援 HTML 或者是純文字 (Plaintext) 郵件  附件檔案
  25. 2011/11/12 PHP Conference 50 使用方式  $this->load->library('email');  $this->email->from('[email protected]', 'Your

    Name');  $this->email->to('[email protected]');  $this->email->cc('[email protected]');  $this->email->bcc('[email protected]');  $this->email->subject('Email Test');  $this->email->message('Testing the email class.');  $this->email->send();  echo $this->email->print_debugger();
  26. 2011/11/12 PHP Conference 51 影像縮圖功能  修改影像的尺寸  建立縮圖 

    影像裁剪  影像旋轉  浮水印  支援 GD/GD2 , NetPBM 以及 ImageMagick
  27. 2011/11/12 PHP Conference 56 What is Sparks? Package Management System

    Making Code Easy to Find, Create, and Distribute
  28. 2011/11/12 PHP Conference 57 Get Sparks tool Now!! 一行指令就安裝完成 $

    php -r "$(curl -fsSL http://getsparks.org/go-sparks)"
  29. 2011/11/12 PHP Conference 58 Installing Sparks with the Spark Manager

    http://goo.gl/lHmCX $ php tools/spark install -v1.0.4 google-url-shortener
  30. 2011/11/12 PHP Conference 59 Load Sparks Library $this->load->spark(google-url-shortener/1.0.4'); $short_url =

    $this->google_url_api->shorten($url); echo $url . " => " . $short_url->id . "<br />";
  31. 2011/11/12 PHP Conference 60 好用 sparks 介紹  ion_auth http://goo.gl/Au4kM

     E-mail 啟動帳號 , 忘記密碼 .. 等  單一帳號多重群組  User/Email 雙重認證選擇  Zend ACL Library 導入權限  搭配 Facebook, Google Auth API 認證  Template http://goo.gl/BN5g6  動態讀取 CSS 或 Javascript
  32. 2011/11/12 PHP Conference 61 CodeIgniter 重大改變 2009->2011  版本演進 1.7.x

    → 2.x.x  捨棄 PHP4  效能改善  版本控制  Bitbucket → Github  加速大家貢獻