Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Introduction to CodeIgniter Framework
Search
Bo-Yi Wu
November 13, 2011
Programming
5
410
Introduction to CodeIgniter Framework
2011 Taiwan PHP conference
http://phpconf.tw/2011
Bo-Yi Wu
November 13, 2011
Tweet
Share
More Decks by Bo-Yi Wu
See All by Bo-Yi Wu
Building a Unified API Gateway for Secure and Scalable Cross-Cloud AI Service
appleboy
0
6
Building MCP (Model Context Protocol) with Golang
appleboy
0
300
如何設計一套具備 Container 容器化技術的 CI/CD 平台?
appleboy
0
1.5k
生成式 AI CodeGPT 開發經驗談
appleboy
0
3k
打造 MLOps 平台 改善 AI 模型開發流程
appleboy
0
2.2k
自動化監控伺服器工具 - Gatus
appleboy
0
4k
Drone CI/CD 自動化測試及部署
appleboy
1
510
初探 Infrastructure as Code 工具 Pulumi
appleboy
2
3.6k
Introduction to Open Policy Agent
appleboy
0
2k
Other Decks in Programming
See All in Programming
20250704_教育事業におけるアジャイルなデータ基盤構築
hanon52_
5
790
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
760
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
290
生成AI時代のコンポーネントライブラリの作り方
touyou
1
220
Porting a visionOS App to Android XR
akkeylab
0
470
RailsGirls IZUMO スポンサーLT
16bitidol
0
190
AIプログラマーDevinは PHPerの夢を見るか?
shinyasaita
1
220
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
120
10 Costly Database Performance Mistakes (And How To Fix Them)
andyatkinson
0
340
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
120
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
NPOでのDevinの活用
codeforeveryone
0
840
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
512
110k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
6
300
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
950
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
A Tale of Four Properties
chriscoyier
160
23k
Statistics for Hackers
jakevdp
799
220k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Code Review Best Practice
trishagee
69
18k
Adopting Sorbet at Scale
ufuk
77
9.5k
Transcript
快速上手 快速上手 CodeIgniter CodeIgniter 吳柏毅 Bo-Yi Wu appleboy http://blog.wu-boy.com/ 2011.11.12
2011 PHP Conference
內容皆採用 創用 CC 姓名標示 相同方式分享 3.0 台灣 授權條款
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
2011/11/12 PHP Conference 4 本投影片適合尚未使用過 Framework 且對於 PHP 已經有些 基礎的
Web Developer
2011/11/12 PHP Conference 5 Why use Framework? 合作方式 (
不管你是團隊還是 Soho) 程式設計師與程式設計師 程式設計師與前端設計師 加速開發 幫你寫好一堆功能模組 ( 分頁 , 驗證碼 , 多國語系 ) 幫你解決安全性問題 ($_GET, $POST ...)
2011/11/12 PHP Conference 6 在 2009 年 1 月 畢業進入資策會的第
1 份工作 CodeIgniter 與我
2011/11/12 PHP Conference 7 為了尋找一套適合同事們 一起共同開發的環境架構 (Zend, Cake, Symfony, Yii...)
2011/11/12 PHP Conference 8 $this->load->view('Why') 在眾多 Framework 選擇下 為什麼要使用 CodeIgniter
2011/11/12 PHP Conference 9 初學者非用 CodeIgniter 的優勢 懶人安裝方法
架構清楚明瞭 繁體中文文件 基礎 MVC 架構 ( 日後可跳往其它 Framework)
2011/11/12 PHP Conference 10 懶人安裝方法
2011/11/12 PHP Conference 11 下載 + 解壓縮 = 安裝完成 適用於任何作業系統
2011/11/12 PHP Conference 12 真的這麼容易安裝 ? 進入下載網址 http://www.codeigniter.org.tw/downloads
解壓縮檔案 unzip CodeIgniter_2.X.X.zip 輸入網址 http://your_host_name/codeigniter/
2011/11/12 PHP Conference 13 $this->load->view('welcome')
2011/11/12 PHP Conference 14 如果安裝失敗呢?
2011/11/12 PHP Conference 15 你還是不要接觸 PHP 會比較好 ( 開玩笑的 )
2011/11/12 PHP Conference 16 CodeIgniter 架構清楚明瞭
2011/11/12 PHP Conference 17 CodeIgniter 目錄 application ( 網站主目錄 )
system (CodeIgniter 核心目錄 ) user_guide (CodeIgniter 使用手冊 ) index.php ( 網站主程式 )
2011/11/12 PHP Conference 18 開發多網站目錄架構 ( 大部份 Framework 做法 )
2011/11/12 PHP Conference 19 多網站目錄架構 system ( 升級版本只需要換此目錄 ) web_01
index.php application web_01 index.php application web_02 index.php application
2011/11/12 PHP Conference 20 簡易清楚繁體中文文件 ( 解決初學者對於英文的排斥 ) http://codeigniter.org.tw/user_guide/
2011/11/12 PHP Conference 21 初學者請直接閱讀一般主題
2011/11/12 PHP Conference 22 必讀資料 一般主題 CodeIgniter URLs
控制器 (Controllers) 檢視 (Views) 模型 (Models) 類別參考 Database 類別 Input 類別 Loader 類別
2011/11/12 PHP Conference 23 進階閱讀 一般主題 • 新增程式庫 (Library)
• 新增核心類別 • Hooks – 擴充核心 • URI 路由 類別參考 • Email 類別 • File Uploading 類別 • Form Validation 類別 • Language 類別 • Output 類別 • Pagination 類別 • Session 類別
2011/11/12 PHP Conference 24 以上就是足以讓大家嘗試的理由 簡單 容易 好上手
2011/11/12 PHP Conference 25 來看看 CodeIgniter 基本 MVC 架構
2011/11/12 PHP Conference 26 Web Server Routing Controller View Model
Layout Database Client Browser MVC Architecture Library Helper Caching
2011/11/12 PHP Conference 27 撰寫第一個 Hello World
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
2011/11/12 PHP Conference 29 CodeIgniter 功能特性介紹
2011/11/12 PHP Conference 30 自訂 URL 還在用 Apache 模組 mod_rewrite
自訂特殊 URL 嘛?
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”
2011/11/12 PHP Conference 32 High Performance Framework CodeIgniter 預設不會載入未使用模組 用到時自行載入
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');
2011/11/12 PHP Conference 34 CodeIgniter Cahe System index Caching Routing
Application Controller Cache 存在
2011/11/12 PHP Conference 35 Cache 使用方式 Cache 可以寫在 Controller
任意地方 $this->output->cache(n); n 代表分鐘
2011/11/12 PHP Conference 36 Cache 缺點 當 expire time 尚未過期
網頁資訊一定是舊的
2011/11/12 PHP Conference 37 CodeIgniter Cache 機制 將 time()+n*60
寫入到 cache 檔案最前面 每次 Request 則取出跟 time() 比對時間 若 cache time > time() 直接輸出 cache file 若 cache time < time() 刪除 cache 並且新增 cache 缺點 : 適用於靜態檔案
2011/11/12 PHP Conference 38 如果用在動態檔案呢 ? 官方無提供刪除 cache 檔案函式 請自行
Patch 程式碼 http://goo.gl/03IrZ $this->output->delete_cache('post/12') $this->output->delete_cache('post/list')
2011/11/12 PHP Conference 39 支援簡單 Command Line CodeIgniter 2.x.x 版本支援
Windows, Linux crontab 搭配背景執行處理
2011/11/12 PHP Conference 40 好處 CLI 去執行您的 cron-jobs 而不需要使用
curl 互動式 "tasks" 工作 , 像是動態改變權限、清除 cache … 目錄、執行備份 等。 任意搭配其他程式 , 例如 Perl, C++, Python
2011/11/12 PHP Conference 41 用法 $ php index.php controller method
$ php index.php welcome index
2011/11/12 PHP Conference 42 避免網頁執行到 command line 將 corn-jobs
移出 apache 可執行目錄 用 PHP 判斷,確保瀏覽器不能執行 cron-jobs php_sapi_name() === "cli" defined('STDIN')
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'];
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']
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);
2011/11/12 PHP Conference 46 良好的程式設計 善用 === 做判斷
數字請用 intval() 或 (int) 過慮 $id = intavl($id); $id = (int) $id; 用 is_array, is_int, is_bool, is_string 判斷類型
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');
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();
2011/11/12 PHP Conference 49 Email 寄信 多重協定 : Mail
, Sendmail , and SMTP 多重收件人 副本 (CC) 和密件副本 (BCCs) 支援 HTML 或者是純文字 (Plaintext) 郵件 附件檔案
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();
2011/11/12 PHP Conference 51 影像縮圖功能 修改影像的尺寸 建立縮圖
影像裁剪 影像旋轉 浮水印 支援 GD/GD2 , NetPBM 以及 ImageMagick
2011/11/12 PHP Conference 52 以上只是一些 CodeIgniter Library 基本介紹 想了解更多功能請上 User
Guide http://goo.gl/7PGnW
2011/11/12 PHP Conference 53 光是 CodeIgniter 內建的功能 還不能滿足您嘛?
2011/11/12 PHP Conference 54 歡迎使用 http://getsparks.org/
2011/11/12 PHP Conference 55 Ruby 有 RubyGems Node.js 有 npm
CodeIgniter 有 sparks What is Sparks?
2011/11/12 PHP Conference 56 What is Sparks? Package Management System
Making Code Easy to Find, Create, and Distribute
2011/11/12 PHP Conference 57 Get Sparks tool Now!! 一行指令就安裝完成 $
php -r "$(curl -fsSL http://getsparks.org/go-sparks)"
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
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 />";
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
2011/11/12 PHP Conference 61 CodeIgniter 重大改變 2009->2011 版本演進 1.7.x
→ 2.x.x 捨棄 PHP4 效能改善 版本控制 Bitbucket → Github 加速大家貢獻
2011/11/12 PHP Conference 62 如果有任何問題都可以到討論區留言 http://www.codeigniter.org.tw/forum/
2011/11/12 PHP Conference 63 歡迎加入 CodeIgniter 翻譯
2011/11/12 PHP Conference 64 https://github.com/appleboy/PHP-CodeIgniter-Framework-Taiwan 縮址 : http://goo.gl/5CU9N
2011/11/12 PHP Conference 65 Thank You.