Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Phpconf 2011 introduction_to_codeigniter

10,088 views

Published on

http://phpconf.tw/2011

快速上手 CodeIgniter
吳柏毅 (Bo-Yi Wu)/appleboy
Introduction to CodeIgniter

Published in: Art & Photos, Technology
  • 多謝。請問您有無創建相關的QQ群?學習CI中!多謝您的指導!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Phpconf 2011 introduction_to_codeigniter

  1. 1. 快速上手 CodeIgniter 吳柏毅 Bo-Yi Wu appleboy http://blog.wu-boy.com/ 2011.11.12 2011 PHP Conference
  2. 2. 內容皆採用 創用 CC 姓名標示相同方式分享 3.0 台灣 授權條款
  3. 3. $this->load->view(about/me)  瑞昱半導體股份有限公司  Linux Kernel Driver, Sencha Touch Web App.  CodeIgniter 台灣站長 http://codeigniter.org.tw  翻譯線上文件  提交 Patch 給官方 CodeIgniter  個人 Github  https://github.com/appleboy2011/11/12 PHP Conference 3
  4. 4. 本投影片適合尚未使用過Framework 且對於 PHP 已經有些 基礎的 Web Developer2011/11/12 PHP Conference 4
  5. 5. Why use Framework?  合作方式 ( 不管你是團隊還是 Soho)  程式設計師與程式設計師  程式設計師與前端設計師  加速開發  幫你寫好一堆功能模組 ( 分頁 , 驗證碼 , 多國語系 )  幫你解決安全性問題 ($_GET, $POST ...)2011/11/12 PHP Conference 5
  6. 6. CodeIgniter 與我 在 2009 年 1 月 畢業進入資策會的第 1 份工作2011/11/12 PHP Conference 6
  7. 7. 為了尋找一套適合同事們 一起共同開發的環境架構 (Zend, Cake, Symfony, Yii...)2011/11/12 PHP Conference 7
  8. 8. $this->load->view(Why) 在眾多 Framework 選擇下 為什麼要使用 CodeIgniter2011/11/12 PHP Conference 8
  9. 9. 初學者非用 CodeIgniter 的優勢  懶人安裝方法  架構清楚明瞭  繁體中文文件  基礎 MVC 架構 ( 日後可跳往其它 Framework)2011/11/12 PHP Conference 9
  10. 10. 懶人安裝方法2011/11/12 PHP Conference 10
  11. 11. 下載 + 解壓縮 = 安裝完成 適用於任何作業系統2011/11/12 PHP Conference 11
  12. 12. 真的這麼容易安裝 ?  進入下載網址  http://www.codeigniter.org.tw/downloads  解壓縮檔案  unzip CodeIgniter_2.X.X.zip  輸入網址  http://your_host_name/codeigniter/2011/11/12 PHP Conference 12
  13. 13. $this->load->view(welcome)2011/11/12 PHP Conference 13
  14. 14. 如果安裝失敗呢?2011/11/12 PHP Conference 14
  15. 15. 你還是不要接觸 PHP 會比較好 ( 開玩笑的 )2011/11/12 PHP Conference 15
  16. 16. CodeIgniter 架構清楚明瞭2011/11/12 PHP Conference 16
  17. 17. CodeIgniter 目錄 application ( 網站主目錄 ) system (CodeIgniter 核心目錄 ) user_guide (CodeIgniter 使用手冊 ) index.php ( 網站主程式 )2011/11/12 PHP Conference 17
  18. 18. 開發多網站目錄架構 ( 大部份 Framework 做法 )2011/11/12 PHP Conference 18
  19. 19. 多網站目錄架構 system ( 升級版本只需要換此目錄 ) web_01 application index.php web_02 application index.php2011/11/12 PHP Conference 19
  20. 20. 簡易清楚繁體中文文件 ( 解決初學者對於英文的排斥 ) http://codeigniter.org.tw/user_guide/2011/11/12 PHP Conference 20
  21. 21. 初學者請直接閱讀一般主題2011/11/12 PHP Conference 21
  22. 22. 必讀資料  一般主題  類別參考  CodeIgniter URLs  Database 類別  控制器 (Controllers)  Input 類別  檢視 (Views)  Loader 類別  模型 (Models)2011/11/12 PHP Conference 22
  23. 23. 進階閱讀  一般主題  類別參考 ● 新增程式庫 (Library) ● Email 類別 ● 新增核心類別 ● File Uploading 類別 ● Hooks – 擴充核心 ● Form Validation 類別 ● URI 路由 ● Language 類別 ● Output 類別 ● Pagination 類別 ● Session 類別2011/11/12 PHP Conference 23
  24. 24. 以上就是足以讓大家嘗試的理由 簡單 容易 好上手2011/11/12 PHP Conference 24
  25. 25. 來看看 CodeIgniter 基本 MVC 架構2011/11/12 PHP Conference 25
  26. 26. MVC Architecture Database Layout Model Library Helper View Controller Routing Caching Web Server2011/11/12 Client Browser PHP Conference 26
  27. 27. 撰寫第一個 Hello World2011/11/12 PHP Conference 27
  28. 28. Hello Appleboy View (views/welcome.php) View <html> <body> Hello <?php echo $username; ?> </body> </html> Controller (controllers/welcome.php) function welcome($id) {Controller $data[‘username’] = $id; $this->load->view(“welcome”, $data); }2011/11/12 PHP Conference 28
  29. 29. CodeIgniter 功能特性介紹2011/11/12 PHP Conference 29
  30. 30. 自訂 URL 還在用 Apache 模組 mod_rewrite 自訂特殊 URL 嘛?2011/11/12 PHP Conference 30
  31. 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”2011/11/12 PHP Conference 31
  32. 32. High Performance Framework CodeIgniter 預設不會載入未使用模組 用到時自行載入2011/11/12 PHP Conference 32
  33. 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);2011/11/12 PHP Conference 33
  34. 34. CodeIgniter Cahe System index Cache 存在 Routing Caching Application Controller2011/11/12 PHP Conference 34
  35. 35. Cache 使用方式  Cache 可以寫在 Controller 任意地方  $this->output->cache(n);  n 代表分鐘2011/11/12 PHP Conference 35
  36. 36. Cache 缺點 當 expire time 尚未過期 網頁資訊一定是舊的2011/11/12 PHP Conference 36
  37. 37. CodeIgniter Cache 機制 將 time()+n*60 寫入到 cache 檔案最前面 每次 Request 則取出跟 time() 比對時間  若 cache time > time() 直接輸出 cache file  若 cache time < time() 刪除 cache 並且新增 cache 缺點 : 適用於靜態檔案 2011/11/12 PHP Conference 37
  38. 38. 如果用在動態檔案呢 ? 官方無提供刪除 cache 檔案函式 請自行 Patch 程式碼 http://goo.gl/03IrZ $this->output->delete_cache(post/12) $this->output->delete_cache(post/list)2011/11/12 PHP Conference 38
  39. 39. 支援簡單 Command Line CodeIgniter 2.x.x 版本支援 Windows, Linux crontab 搭配背景執行處理2011/11/12 PHP Conference 39
  40. 40. 好處  CLI 去執行您的 cron-jobs 而不需要使用 curl  互動式 "tasks" 工作 , 像是動態改變權限、清除 cache 目錄、執行備份…等。  任意搭配其他程式 , 例如 Perl, C++, Python2011/11/12 PHP Conference 40
  41. 41. 用法$ php index.php controller method$ php index.php welcome index2011/11/12 PHP Conference 41
  42. 42. 避免網頁執行到 command line  將 corn-jobs 移出 apache 可執行目錄  用 PHP 判斷,確保瀏覽器不能執行 cron-jobs  php_sapi_name() === "cli"  defined(STDIN)2011/11/12 PHP Conference 42
  43. 43. 處理 $_POST,$_GET 資料 if ( ! isset($_POST[user])) $user = FALSE; else $user = $_POST[user];$user = (! isset($_POST[user])) ? FALSE : $_POST[user]; 2011/11/12 PHP Conference 43
  44. 44. 不需要這麼麻煩  $_POST 資料  $user = $this->input->post(user);  $_GET 資料  $user = $this->input->get(user);  一起判斷  $user = $this->input->get_post(user);  先找 $_POST[user], 後找 $_GET[user]2011/11/12 PHP Conference 44
  45. 45. 避免 XSS 的攻擊  $user = $this->input->post(user, TRUE);  $user = $this->input->get(user, TRUE);  $user = $this->input->get_post(user, TRUE);2011/11/12 PHP Conference 45
  46. 46. 良好的程式設計  善用 === 做判斷  數字請用 intval() 或 (int) 過慮  $id = intavl($id);  $id = (int) $id;  用 is_array, is_int, is_bool, is_string 判斷類型2011/11/12 PHP Conference 46
  47. 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); 2011/11/12 PHP Conference 47
  48. 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();2011/11/12 PHP Conference 48
  49. 49. Email 寄信  多重協定 : Mail , Sendmail , and SMTP  多重收件人  副本 (CC) 和密件副本 (BCCs)  支援 HTML 或者是純文字 (Plaintext) 郵件  附件檔案2011/11/12 PHP Conference 49
  50. 50. 使用方式 $this->load->library(email); $this->email->from(your@example.com, Your Name); $this->email->to(someone@example.com); $this->email->cc(another@another-example.com); $this->email->bcc(them@their-example.com); $this->email->subject(Email Test); $this->email->message(Testing the email class.); $this->email->send(); echo $this->email->print_debugger(); 2011/11/12 PHP Conference 50
  51. 51. 影像縮圖功能  修改影像的尺寸  建立縮圖  影像裁剪  影像旋轉  浮水印  支援 GD/GD2 , NetPBM 以及 ImageMagick2011/11/12 PHP Conference 51
  52. 52. 以上只是一些 CodeIgniter Library 基本介紹 想了解更多功能請上 User Guide http://goo.gl/7PGnW2011/11/12 PHP Conference 52
  53. 53. 光是 CodeIgniter 內建的功能 還不能滿足您嘛?2011/11/12 PHP Conference 53
  54. 54. 歡迎使用 http://getsparks.org/2011/11/12 PHP Conference 54
  55. 55. What is Sparks? Ruby 有 RubyGems Node.js 有 npm CodeIgniter 有 sparks2011/11/12 PHP Conference 55
  56. 56. What is Sparks? Package Management System Making Code Easy to Find, Create, and Distribute2011/11/12 PHP Conference 56
  57. 57. Get Sparks tool Now!! 一行指令就安裝完成$ php -r "$(curl -fsSL http://getsparks.org/go-sparks)" 2011/11/12 PHP Conference 57
  58. 58. Installing Sparks with the Spark Manager http://goo.gl/lHmCX$ php tools/spark install -v1.0.4 google-url-shortener 2011/11/12 PHP Conference 58
  59. 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 />";2011/11/12 PHP Conference 59
  60. 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 或 Javascript2011/11/12 PHP Conference 60
  61. 61. CodeIgniter 重大改變 2009->2011  版本演進 1.7.x → 2.x.x  捨棄 PHP4  效能改善  版本控制  Bitbucket → Github  加速大家貢獻2011/11/12 PHP Conference 61
  62. 62. 如果有任何問題都可以到討論區留言 http://www.codeigniter.org.tw/forum/2011/11/12 PHP Conference 62
  63. 63. 歡迎加入 CodeIgniter 翻譯2011/11/12 PHP Conference 63
  64. 64. https://github.com/appleboy/PHP-CodeIgniter-Framework-Taiwan 縮址 : http://goo.gl/5CU9N 2011/11/12 PHP Conference 64
  65. 65. Thank You.2011/11/12 PHP Conference 65

×