OpenWebSchool - 11 - CodeIgniter

971 views
875 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
971
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

OpenWebSchool - 11 - CodeIgniter

  1. 1. Ensky / 林宏昱
  2. 2. Whats FrameworkFramework ,中文是「框架」顧名思義就是一個框框,你寫的東西都要在那個框框裡。
  3. 3. Whats Framework更精確的定義,就是有人寫了一些code,那些code提供了一個規範,規定你怎麼寫網站、檔案應該存在哪裡,透過那些規定,你可能可以更快寫出一個架構不錯的網站。
  4. 4. 你可能會覺得,PHP那麼簡單,我也寫很快阿,為什麼還需要Framework來「規範」我呢?我崇尚自由!
  5. 5. Why Framework?但是阿,有句諺語說,「code過了三個月就不是你寫的了」自己寫的code要是沒有document,很快就忘了你之前的邏輯
  6. 6. 或者是,你在團隊中工作,而他們全部都需要了解你的Coding style。身為工程師的你超懶得寫document的阿
  7. 7. Why Framework?• 你需要大量Document讓你的工作伙伴快速上手• 你需要一套規範讓大家coding邏輯相同而這些是一個好的Framework會提供給你的!
  8. 8. Framework to NewHand基本上不建議新手學Framework。新手對於PHP的各種特性還不夠熟悉,很容易被Framework帶來的各種「糖衣」誘惑一旦使用之後從此對於架構的概念就定型了從此在也無法接受其他架構(即使別的FrameWork可能設計的更好)
  9. 9. Framework to NewHandFramework也是人寫出來的,在使用的時候你一定要知道每個功能背後是怎麼寫的,甚至你可以自己trace code。如此一來,才不會被Framework綁住,輕則不能輕易換Framework,重則沒有Framework就不會寫code了。
  10. 10. Framework to NewHand因此我對新手的建議是多練、多嘗試趁自己的架構還沒有被定型,多嘗試研發自己的架構,寫的順了,想快速開發,再survey一套順手的Framework而不是一開始就直接碰他。
  11. 11. Popular PHP Frameworkhttp://www.phpframeworks.com/index.php
  12. 12. CodeIgniter is an PHP Framework• 小巧• 輕量• 說明文件多、完整• 速度快• 簡單我講CI不代表CI就是最好的Framework,每個人喜歡的Framework不同。
  13. 13. Model View ControllerMVC是一個程式設計的概念,和OOP很像,並不是網頁設計獨有的東西。但在網頁設計上剛好很適合採用M-V-C架構,因此幾乎大家的PHP Framework都採此架構設計。
  14. 14. Model View Controller ControllerModel View
  15. 15. Model View Controller• Controller – 邏輯判斷 Ex: 這頁做些什麼事情?(登入、註冊、表單) 我需要哪些資料? 中間人的角色• Model – 可以重複利用的函數群 可以被不同的Controller load 比如說Database的操作很適合成為Model
  16. 16. Model View Controller• View – Layout 各種不同的網頁內容 此種頁面純粹印出Controller提供的變數 (or陣列) 不做任何邏輯判斷。
  17. 17. Model View Controller 1.GET /loginBrowser Controller 6. Return Page 4.Load Login page 3.Return Auth model 2.Load Auth model 5. Return Login Page Model View
  18. 18. RouterCI的檔案管理是用URL PATH管理的,當一個網址長這樣:http://www.codeigniter.org.tw/downloads他其實代表的意思是:http://www.codeigniter.org.tw/index.php/downloads而利用Web Server的URL Rewrite功能,達到重新導向的目的。因此,所有網址都經由index.php做統一集中的route動作
  19. 19. Routerindex.php看到一個url長這樣http://ensky.tw/auth/login根據CI的router,他會去找controller/auth.php這隻程式,然後去執行他的login functionDemo Code
  20. 20. Router而如果再繼續/下去,則會被當成該method的params傳進去。也因為CI的Router機制,我們看到一個url就知道去哪裡找他,檔案在哪裡都一清二楚不會找不到。http://xxxx/controller/method/params
  21. 21. Loader為了加快速度,CI的所有元件都是load by need的,需要的時候在使用loader把它load進來。load進來之後就會綁到$this上面,比如說:$this->load->model(curl);$this->curl->xxx();就不需要用傳統的require_once __dir__ ."/curl.php";$curl = new curl();
  22. 22. Demo TimeIll show you controller, model, view
  23. 23. Library有些時候你會想用別人寫的Library,但他不是用CI這套Framework,怎麼辦?沒關係,CI可以讓你使用別人寫的Library,用法一樣輕鬆寫意。$this->load->library(phpmailer);$this->phpmailer->send(enskylin@gmail.com);
  24. 24. CI SessionCI製作團隊似乎覺得php native的session不是很好用,所以自己設計了一套session,完全使用cookie加密存放資料,也可以選擇使用db存放。$this->session->set_userdata(id, ensky);echo $this->session->userdata(id); // ensky
  25. 25. CI SessionNote:如果有個session沒有被設定過(!isset)的話不會噴錯誤,他會是False有個flash_data機制頗好用,若某個session只想保留給下一頁使用,就可以用flashdata來存$this->session ->set_flashdata(errmsg, error!);<?=$this->session->flashdata(errmsg)?>
  26. 26. Database• 基本上就完全是我前幾天講的Active Record$result = $this->db->select(*) ->from(user) ->where(id, ensky) ->get()->result_array();$insert_data = [id=>ensky, gender=>boy];$this->db->insert(user, $insert_data);
  27. 27. Other feature• Form Validation – 可以讓你很快的做表單輸入格式驗證 比如說密碼長度大於blablabla 或者是這欄只能是數字,諸如此類。 http://www.codeigniter.org.tw/user_guide/libraries /form_validation.html
  28. 28. Other feature• input class – 使用者的資料向來都要視為很不安全, 比方說get, post, cookie等資訊, ci就把所有使用者的input包成一個class, 可以用類似方式取用 $id = $this->input->post(id); $cookie_id = $this->input->cookie(id);
  29. 29. DEMO!
  30. 30. Reference• 絕對強大的中文手冊 http://www.codeigniter.org.tw/user_guide/

×