More Related Content
Similar to Phpconf 2011 introduction_to_codeigniter (20)
Phpconf 2011 introduction_to_codeigniter
- 1. 快速上手 CodeIgniter
吳柏毅 Bo-Yi Wu
appleboy
http://blog.wu-boy.com/
2011.11.12
2011 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
2011/11/12 PHP Conference 3
- 5. Why use Framework?
合作方式 ( 不管你是團隊還是 Soho)
程式設計師與程式設計師
程式設計師與前端設計師
加速開發
幫你寫好一堆功能模組 ( 分頁 , 驗證碼 , 多國語系 )
幫你解決安全性問題 ($_GET, $POST ...)
2011/11/12 PHP Conference 5
- 6. CodeIgniter 與我
在 2009 年 1 月
畢業進入資策會的第 1 份工作
2011/11/12 PHP Conference 6
- 7. 為了尋找一套適合同事們
一起共同開發的環境架構
(Zend, Cake, Symfony, Yii...)
2011/11/12 PHP Conference 7
- 9. 初學者非用 CodeIgniter 的優勢
懶人安裝方法
架構清楚明瞭
繁體中文文件
基礎 MVC 架構 ( 日後可跳往其它 Framework)
2011/11/12 PHP Conference 9
- 11. 下載 + 解壓縮 = 安裝完成
適用於任何作業系統
2011/11/12 PHP Conference 11
- 12. 真的這麼容易安裝 ?
進入下載網址
http://www.codeigniter.org.tw/downloads
解壓縮檔案
unzip CodeIgniter_2.X.X.zip
輸入網址
http://your_host_name/codeigniter/
2011/11/12 PHP Conference 12
- 17. CodeIgniter 目錄
application ( 網站主目錄 )
system (CodeIgniter 核心目錄 )
user_guide (CodeIgniter 使用手冊 )
index.php ( 網站主程式 )
2011/11/12 PHP Conference 17
- 18. 開發多網站目錄架構
( 大部份 Framework 做法 )
2011/11/12 PHP Conference 18
- 19. 多網站目錄架構
system ( 升級版本只需要換此目錄 )
web_01
application
index.php
web_02
application
index.php
2011/11/12 PHP Conference 19
- 20. 簡易清楚繁體中文文件
( 解決初學者對於英文的排斥 )
http://codeigniter.org.tw/user_guide/
2011/11/12 PHP Conference 20
- 22. 必讀資料
一般主題 類別參考
CodeIgniter URLs Database 類別
控制器 (Controllers) Input 類別
檢視 (Views) Loader 類別
模型 (Models)
2011/11/12 PHP Conference 22
- 23. 進階閱讀
一般主題 類別參考
● 新增程式庫 (Library) ● Email 類別
● 新增核心類別 ● File Uploading 類別
● Hooks – 擴充核心 ● Form Validation 類別
● URI 路由 ● Language 類別
● Output 類別
● Pagination 類別
● Session 類別
2011/11/12 PHP Conference 23
- 26. MVC Architecture
Database Layout
Model Library Helper View
Controller
Routing Caching
Web Server
2011/11/12 Client Browser
PHP Conference 26
- 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
- 30. 自訂 URL
還在用 Apache 模組 mod_rewrite
自訂特殊 URL 嘛?
2011/11/12 PHP Conference 30
- 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
- 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
- 35. Cache 使用方式
Cache 可以寫在 Controller 任意地方
$this->output->cache(n);
n 代表分鐘
2011/11/12 PHP Conference 35
- 36. Cache 缺點
當 expire time 尚未過期
網頁資訊一定是舊的
2011/11/12 PHP Conference 36
- 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. 如果用在動態檔案呢 ?
官方無提供刪除 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. 支援簡單 Command Line
CodeIgniter 2.x.x 版本支援
Windows, Linux crontab
搭配背景執行處理
2011/11/12 PHP Conference 39
- 40. 好處
CLI 去執行您的 cron-jobs 而不需要使用 curl
互動式 "tasks" 工作 , 像是動態改變權限、清除
cache 目錄、執行備份…等。
任意搭配其他程式 , 例如 Perl, C++, Python
2011/11/12 PHP Conference 40
- 41. 用法
$ php index.php controller method
$ php index.php welcome index
2011/11/12 PHP Conference 41
- 42. 避免網頁執行到 command line
將 corn-jobs 移出 apache 可執行目錄
用 PHP 判斷,確保瀏覽器不能執行 cron-jobs
php_sapi_name() === "cli"
defined('STDIN')
2011/11/12 PHP Conference 42
- 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. 不需要這麼麻煩
$_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. 避免 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. 良好的程式設計
善用 === 做判斷
數字請用 intval() 或 (int) 過慮
$id = intavl($id);
$id = (int) $id;
用 is_array, is_int, is_bool, is_string 判斷類型
2011/11/12 PHP Conference 46
- 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. 分頁
$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. Email 寄信
多重協定 : Mail , Sendmail , and SMTP
多重收件人
副本 (CC) 和密件副本 (BCCs)
支援 HTML 或者是純文字 (Plaintext) 郵件
附件檔案
2011/11/12 PHP Conference 49
- 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. 影像縮圖功能
修改影像的尺寸
建立縮圖
影像裁剪
影像旋轉
浮水印
支援 GD/GD2 , NetPBM 以及 ImageMagick
2011/11/12 PHP Conference 51
- 52. 以上只是一些
CodeIgniter Library 基本介紹
想了解更多功能請上
User Guide
http://goo.gl/7PGnW
2011/11/12 PHP Conference 52
- 55. What is Sparks?
Ruby 有 RubyGems
Node.js 有 npm
CodeIgniter 有 sparks
2011/11/12 PHP Conference 55
- 56. What is Sparks?
Package Management System
Making Code Easy to
Find, Create, and Distribute
2011/11/12 PHP Conference 56
- 57. Get Sparks tool Now!!
一行指令就安裝完成
$ php -r "$(curl -fsSL http://getsparks.org/go-sparks)"
2011/11/12 PHP Conference 57
- 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
- 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
2011/11/12 PHP Conference 60
- 61. CodeIgniter 重大改變 2009->2011
版本演進 1.7.x → 2.x.x
捨棄 PHP4
效能改善
版本控制
Bitbucket → Github
加速大家貢獻
2011/11/12 PHP Conference 61
- 62. 如果有任何問題都可以到討論區留言
http://www.codeigniter.org.tw/forum/
2011/11/12 PHP Conference 62