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
370
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
1.2k
生成式 AI CodeGPT 開發經驗談
appleboy
0
2.9k
打造 MLOps 平台 改善 AI 模型開發流程
appleboy
0
2.1k
自動化監控伺服器工具 - Gatus
appleboy
0
3.8k
Drone CI/CD 自動化測試及部署
appleboy
1
470
初探 Infrastructure as Code 工具 Pulumi
appleboy
2
3.5k
Introduction to Open Policy Agent
appleboy
0
1.9k
善用 Go 語言效能測試工具來提升執行效率
appleboy
2
4.3k
用 Go 語言打造多台機器 Scale 架構
appleboy
1
4.6k
Other Decks in Programming
See All in Programming
How mixi2 Uses TiDB for SNS Scalability and Performance
kanmo
35
14k
もう僕は OpenAPI を書きたくない
sgash708
3
990
富山発の個人開発サービスで日本中の学校の業務を改善した話
krpk1900
4
380
CNCF Project の作者が考えている OSS の運営
utam0k
6
710
お前もAI鬼にならないか?👹Bolt & Cursor & Supabase & Vercelで人間をやめるぞ、ジョジョー!👺
taishiyade
5
3.9k
Java Webフレームワークの現状 / java web framework at burikaigi
kishida
9
2.2k
Unity Android XR入門
sakutama_11
0
150
Software Architecture
hschwentner
6
2.1k
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
490
Kubernetes History Inspector(KHI)を触ってみた
bells17
0
220
AWS Lambda functions with C# 用の Dev Container Template を作ってみた件
mappie_kochi
0
240
ASP. NET CoreにおけるWebAPIの最新情報
tomokusaba
0
360
Featured
See All Featured
Designing Experiences People Love
moore
139
23k
Code Reviewing Like a Champion
maltzj
521
39k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Why Our Code Smells
bkeepers
PRO
336
57k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Bash Introduction
62gerente
610
210k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
RailsConf 2023
tenderlove
29
1k
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.