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
360
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
如何設計一套具備 Container 容器化技術的 CI/CD 平台?
appleboy
0
1k
生成式 AI CodeGPT 開發經驗談
appleboy
0
2.7k
打造 MLOps 平台 改善 AI 模型開發流程
appleboy
0
2k
自動化監控伺服器工具 - Gatus
appleboy
0
3.7k
Drone CI/CD 自動化測試及部署
appleboy
1
450
初探 Infrastructure as Code 工具 Pulumi
appleboy
2
3.4k
Introduction to Open Policy Agent
appleboy
0
1.8k
善用 Go 語言效能測試工具來提升執行效率
appleboy
2
4.3k
用 Go 語言打造多台機器 Scale 架構
appleboy
1
4.5k
Other Decks in Programming
See All in Programming
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
100
Duckdb-Wasmでローカルダッシュボードを作ってみた
nkforwork
0
120
Quine, Polyglot, 良いコード
qnighy
4
640
受け取る人から提供する人になるということ
little_rubyist
0
230
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
Arm移行タイムアタック
qnighy
0
320
Snowflake x dbtで作るセキュアでアジャイルなデータ基盤
tsoshiro
2
520
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
110
聞き手から登壇者へ: RubyKaigi2024 LTでの初挑戦が 教えてくれた、可能性の星
mikik0
1
130
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
9
3.3k
最新TCAキャッチアップ
0si43
0
140
Pinia Colada が実現するスマートな非同期処理
naokihaba
4
220
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Speed Design
sergeychernyshev
25
620
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Happy Clients
brianwarren
98
6.7k
Six Lessons from altMBA
skipperchong
27
3.5k
Why Our Code Smells
bkeepers
PRO
334
57k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Documentation Writing (for coders)
carmenintech
65
4.4k
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.