Phpconf 2011 introduction_to_codeigniter

9,785 views

Published on

http://phpconf.tw/2011

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

Published in: Art & Photos, Technology
1 Comment
17 Likes
Statistics
Notes
  • 多謝。請問您有無創建相關的QQ群?學習CI中!多謝您的指導!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
9,785
On SlideShare
0
From Embeds
0
Number of Embeds
3,661
Actions
Shares
0
Downloads
172
Comments
1
Likes
17
Embeds 0
No embeds

No notes for slide

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

×