Transcript CakePHP

網頁系統架構
Cake PHP
指導老師:柯博昌 教授
學生:
1101345101 陳筱婷
1101345108 王貞妮
1101345111 王致超
1101345116 林玨妤
2
目錄
• 簡介
• 環境建置
• 檔案目錄
• Modle-View-Controller (MVC)
• 範例
3
Cake PHP簡介
• 以PHP為基礎、免費、開放原始碼且標榜快速建構的架構
• Cake PHP的是一個web應用程序框架,來自Ruby on Rails 的架構
• 目前最新版本:2.3.2版
• 設計模型:
Active Record
Association Data Mapping
Front Controller
MVC
4
環境建置
在網址列上輸入localhost確認wamp是否安裝成功
5
把CakePHP解壓縮至Wamp/www目錄底下
6
進行修正此兩行錯誤
7
開啟此檔案
搜尋此段落
8
刪除任意數值
做更改
9
開啟此檔案
複製此段落
10
搜尋此段落
刪除#字符號
11
重新命名
12
重新命名為
database.php
13
開啟database.php檔案
修改資料庫設定
14
更改
刪除此段
15
完成連接資料庫
16
檔案目錄
檔案命名用 單數,
ex: model/post.php
app
都是以“複數名詞”命名
ex: controller/posts.php
config
擁有一些CakePHP使用的設定
model
應用程式模型、行為和資料來源
locale
儲存用來國際化的字元檔
controller
應用程式邏輯控制和組件
plugins
view
webroot
tmp
包含插件
放置展示層的檔案
根目錄
用來儲存CakePHP的暫存資料
Cakephp
plubins
vendors
lib
17
A Typical CakePHP Request
18
MVC
• CakePHP採用MVC架構,也提供Component、
Behavior、Helper
Behavior
Model
View
Controller
Component
Helper
19
Model
M • Create a Model
V • Relationship Types
C
20
Retrieving
M
V
• find()型態
▫
▫
▫
▫
first
all
list
count
• find()屬性
C
▫
▫
▫
▫
▫
conditions
fields
order
group
limit
21
M
V
C
Saving
• save()
• saveField()
• saveAll()
• set()
• updatedAll()
22
M
Delete
V
• delete()
• deleteAll()
C
23
find(all)與find(list)
24
find(all)與find(list)
25
M
Behavior
• ACL
▫ 權限列表:定義操作者可以操作哪些表
V • Containable
▫ 篩選Model的查詢操作
• Tree
▫ 用來儲存多層的資料
C
26
M
Behavior-ACL(Access Control Lists)
將 ACO(Access Control Object) 和 ARO(Access
Request Object) 兩個樹狀結構進行權屬優先判斷
• controller裡使用$components陣列把ACL component包
V
含進來
var $components = array('Acl');
• 建立ARO $aro->create($user_id, $parent_id, $alias);
$aro = new Aro();
C
$aro->create( 1, null, 'Bob Marley' );
$aro->create( 2, null, 'Jimi Hendrix');
27
M
Behavior-ACL(Access Control Lists)
• 建立ACO $aco->create($id, $parent, $alias);
$aco = new Aco();
$aco->create(1, null, 'Electric Guitar');
V
$aco->create(2, null, 'United States Army');
• 指定權限
$this->Acl->allow('Jimi Hendrix', 'Electric Guitar');
$this->Acl->allow('Bob Marley ', 'Electric Guitar',
'read');
C
28
M
Behavior-Containable
• 先在主要的Model中:
▫ var $actsAs = array('Containable');
V
User->Profile
User->Account->AccountSummary
User->Post->PostAttachment>PostAttachmentHistory>HistoryNotes
C
29
M
Behavior-tree
• My Categories
▫ Fun
 Sport
V
Other People
 Surfing
 Extreme knitting
 Friends
Fun
 Gerald
 Gwendolyn
▫ Work
 Reports
 Annual
 Status
C
My Categories
 Trips
 National
 International
• Other People
Sport
Work
Friends Reports
Gerald
Gwendolys
Trips
30
M
V
C
Behavior-tree-Add
1 •
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 •
My Categories
▫ Fun
 Sport
 Skating
 Surfing
 Extreme knitting
 Friends
 Gerald
 Gwendolyn
▫ Work
 Reports
 Annual
 Status
 Trips
 National
 International
Other People
31
M
V
C
Behavior-tree-Modifying(1)
1 •
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 •
My Categories
▫ Fun
 Sport
 Skating
 Extreme Surfing
 Extreme knitting
 Friends
 Gerald
 Gwendolyn
▫ Work
 Reports
 Annual
 Status
 Trips
 National
 International
Other People
32
M
V
C
Behavior-tree-Modifying(2)
1 • My Categories
▫ Fun
2
 Sport
3
 Skating
4
 Extreme knitting
5
 Friends
6
 Gerald
7
 Gwendolyn
8
▫ Work
9
 Reports
10
 Annual
11
 Status
12
 Trips
13
 National
14
 International
15
16• Other People
17 • Extreme Surfing
33
M
V
Behavior-tree-Delete
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
• My Categories
▫ Fun
 Sport
 Skating
 Extreme knitting
 Friends
 Gerald
 Gwendolyn
▫ Work
 Trips
 National
 International
C • Other People
• Extreme Surfing
34
M
Data source
• 解決連結外部或多資料庫(REST、RSS、JSON)
至app/config/database.php
V
Model
C
Controller
35
M
View
• view就是網頁的模板。
• 是顯示給使用者看到的部分。
V • CakePHP的預設view文件是以.ctp為副檔
名的純PHP文件。
• 檔名通常跟著呼叫它的action名稱命名。
C
36
view
M
V
C
elements
layout
37
M
Helper
• 主要功用在提供view常常使用的一些排列
和顯示資料功能。
V
C
38
M
Helpers
Helpers
V
C
建立HTML表單及表單元素,和處理驗
Form
證問題
HTML
建立格式良好的標籤的簡便方法
建立與各種JavaScript庫兼容的
JavaScript
JavaScript
Paginator 模型數據分頁和排序
RSS
輸出RSS feed XML資料的方法
39
M
HTML Helper
• 是Cake讓建構網站的過程變得比較不單調
又比較快速的方法之一。
V
• 主要目標:
1. 幫忙加入常用的HTML程式碼
2. 幫助快速又輕易地建立web表單。
C
40
M
V
C
使用CakePHP的helper可以節省
編寫基本表單元素所需的大量時間。
41
M
V
C
42
M
Controller
• 與Model
V
▫ 用來管理應用程式裡的邏輯部分。
• 與View
▫ 將處理過的資料傳到View顯示。
C
• Controller可以含有很多的Action,這些
Action就是程式中呼叫顯示畫面的函式。
43
M
V
Controller
app/View/Recipes/view.ctp
app/View/Recipes/share.ctp
C
app/View/Recipes/search.ctp
44
M
V
讀取全部資料
讀取單筆資料
查詢條件
C
45
新增資料(View)
46
新增資料(Controller)
step1
step2
step3
47
修改資料(View)
48
修改資料(Controller)
修改的欄位
修改資料條件
49
刪除資料(Controller)
刪除資料ID
50
M
Components
 Security
 Sessions
V
 Access control lists
 Emails
 Cookies
 Authentication
C
 Request handling
 Pagination
51
M
V
C
Components-執行順序
產生
controller
載入
component
beforeFilter
startup
執行
Action
52
DEMO
53
優點
 對於初學MVC架構的開發者而言,較為容易上
手
 開發一個新的網站可以節省很多時間
 提供許多API讓開發者可以方便的使用
54
缺點
 API裡面,函數的使用方法講的不夠詳細,在
開發的時候必須花比較多的時間去嘗試。