SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Downloaden Sie, um offline zu lesen
CakePHP3入門
目次
1. CakePHP3とは
2. フレームワークとは
3. 特徴
a. CoC(Conversion over Configuration
b. MVCモデル
c. O/Rマッピング
d. bakeコマンド
e. フォームバリデーション
4. ベタ書きとの比較
5. 問題
6. まとめ
CakePHP3とは
- プログラミング言語「PHP」のフレームワーク
「PHP開発者が誰でも素早く快適に開発を行える事」を目標として
産み出されたフレームワークの3rdバージョン
フレームワークって?
システム(仕組み)
そのものを提供するもの
- 様々なシステム開発を効率化してくれる機能群
- ソフトウェアの骨組みまで提供
- 少ないコードで機能やデザインを実現
システム開発を楽に行えるように用意された
プログラムの雛形
CakePHP3特徴
- CoC (Convention over Configuration)
- MVCモデル (Model, View, Controller)
- 柔軟なO/Rマッピング
- bakeコマンド
- フォームバリデーション
CoC
(Convention over Configuration)
設定より規約という設計概念
設計パターンや書き方を決め、
「こんな時はこう書きましょう」
というルールにしてしまえ!ってことです。
例えば...
ファイルとクラス名との規約
ArticlesControllerというクラスは、ArticlesController.phpというファ
イル名にする。
Output =
もし規約を破っていたら...
他にも
- コントローラーの規約
- コントローラー名とURLの規約
- データベースの規約
- モデルの規約
- ビューの規約
詳しくは https://book.cakephp.org/3.0/ja/intro/conventions.html
MVCモデル
MVCモデルとは
簡単に言ってしまえばプログラムの構成
中身を「モデル(Model)」「ビュー(View)」「コントローラ
(Controller)」の3つに分類
Controller(C)
制御担当
View(V)
画面担当
Model(M)
データ管理担当
O/Rマッピング
SQL文を書くことなく非常に短い記述でレ
コードの抽出や書き換えが可能
Articles
id
title
content
author_id
Authors
id
name
1
*
SQL(ベタ書き)
$mysqli = new mysqli('localhost', 'root', ‘password’, ‘database’);
$sql = ‘SELECT * FROM articles
INNER JOIN authors
ON articles.author_id = authors.id’;
$result = $mysqli->query($sql);
echo $result;
*1画面ごとにデータベース処理を書く必要が
ある。
CakePHP
Configファイル
'host' => 'localhost',
'username' => 'root',
'password' => 'password',
'database' => 'database',
Model
$this->belongsTo('Authors', [
'foreignKey' => 'author_id',
'joinType' => 'INNER'
]);
Controller
$articles = TableRegistry::get('Articles');
$query = $articles->find()->all();
$this->set(‘query’, $query);
View
<?= $query ?>
bakeコマンド
データベースの構成に合わせてコントロー
ラーやモデルの雛形を生成してくれる
$cakephp/bin/cake bake
ケーキ生地を焼く
= ケーキの土台を作る
bakeコマンド
= プログラムの土台を作る
Controller(C)
ArticlesController.php
View(V)
Articles/add.ctp
Model(M)
ArticlesTable.php
自動生成!!
フォームバリデーション
これです
$validator
->notEmpty(‘username’, ‘入力必須項目です。’);
他にも
必須項目に指定する
- requireEmpty
- notBlank
数字のみ
- numeric
- integer
- naturalNumber
- nonNegativeInteger
メールアドレス
- email
クレジットカード
- creditCard
URL
- url
文字と数字のみ
- alphaNumeric
等式
- equals
- notEquals
ベタ書きとの比較
ベタ書き CakePHP
開発ルール 全て決める必要がある CoCですでに決まっている
プログラム構造 1画面を1ファイル MVCモデル
データベースアクセス SQLを書く Modelの使用でSQL不要(O/Rマッピン
グ)
スケルトン(骨組み)生成 なし bakeコマンド
入力チェック 画面ごとにプログラムを書く
(チェックの共通化は可能 )
Modelに定義するだけで可能
(画面ごとに定義は不要 )
セキュリティ対策 画面ごと、SQLの実行ごとにセキュリ
ティ対策を考慮
XSS/CSRF/フォーム改ざんの対策は
CakePHPで考慮されている
ビューの再利用 require/ includeで再利用する
PHPファイルを読み込む
画面全体はレイアウト、画面の一部は
エレメントで再利用可能
問題
問題 1
関数A:データを画面に表示する処理をする
関数B:データベースからデータを持って来る処理をする
関数C:関数AとBを動かす
関数A, B, CはそれぞれMVCのどれにあたるでしょう?
問題 1 答え
関数A:データを画面に表示する処理をする
関数B:データベースからデータを持って来る処理をする
関数C:関数AとBを動かす
関数A, B, CはそれぞれMVCのどれにあたるでしょう?
関数A: V
関数B: M
関数C: C
問題 2
‘worker_id’という社員番号を入力するフォームがあります。
ちゃんと入力されていること、また入力値が数字であることをチェックする
フォームバリデーションを書いてください。
*メッセージは何でも可
問題 2 答え
‘worker_id’という社員番号を入力するフォームがあります。
ちゃんと入力されていること、また入力値が数字であることをチェックする
フォームバリデーションを書いてください。
*メッセージは何でも可
$validator
->notEmpty(‘worker_id’, ‘メッセージ’)
->integer(‘worker_id’, ‘メッセージ’)
まとめ
- CakePHPとはPHP開発を効率よくしてくれるフレームワーク
- 設定より規約(ルール)が大事(CoC)
- MVCモデルに準拠した開発できれいな構造
- 柔軟なO/Rマッピングで簡単なデータベース処理
- bakeコマンドでプログラムの土台を自動生成
- フォームバリデーションがとても簡単
Good is good.
We provide opportunities to the SEKAI by fusing technology and ideas.
テクノロジーとクリエイティブでセカイをより良くする
お問い合わせはこちらから
https://giginc.co.jp/contact/

Weitere ähnliche Inhalte

Ähnlich wie CakePHP3入門

PowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiaPowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
junichi anno
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
 
AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワークAspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワーク
kenjis
 

Ähnlich wie CakePHP3入門 (20)

PowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiaPowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
 
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること 【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
 
社内勉強会 - chef
社内勉強会 - chef社内勉強会 - chef
社内勉強会 - chef
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
 
AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワークAspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワーク
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00
 
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますElixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
 
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
 
2.website spark seminar_infra
2.website spark seminar_infra2.website spark seminar_infra
2.website spark seminar_infra
 
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
 
Jap1
Jap1Jap1
Jap1
 
Mvc conf session_1_osada
Mvc conf session_1_osadaMvc conf session_1_osada
Mvc conf session_1_osada
 
gRPC と nginx による HTTP/2 サービスメッシュ構築
gRPC と nginx による HTTP/2 サービスメッシュ構築gRPC と nginx による HTTP/2 サービスメッシュ構築
gRPC と nginx による HTTP/2 サービスメッシュ構築
 
Mk network programmability-03
Mk network programmability-03Mk network programmability-03
Mk network programmability-03
 
Cakephp
CakephpCakephp
Cakephp
 

Mehr von GIG inc.

Mehr von GIG inc. (20)

Lt41
Lt41Lt41
Lt41
 
Lt40
Lt40Lt40
Lt40
 
Lt39
Lt39Lt39
Lt39
 
LT38テーマ3-2
LT38テーマ3-2LT38テーマ3-2
LT38テーマ3-2
 
LT38テーマ3-1
LT38テーマ3-1LT38テーマ3-1
LT38テーマ3-1
 
LT38テーマ2-2
LT38テーマ2-2LT38テーマ2-2
LT38テーマ2-2
 
LT38テーマ2-1
LT38テーマ2-1LT38テーマ2-1
LT38テーマ2-1
 
LT38テーマ1-2
LT38テーマ1-2LT38テーマ1-2
LT38テーマ1-2
 
LT38テーマ1-1
LT38テーマ1-1LT38テーマ1-1
LT38テーマ1-1
 
lt37
lt37lt37
lt37
 
lt23後半
lt23後半lt23後半
lt23後半
 
lt23前半
lt23前半lt23前半
lt23前半
 
LT.22 GitHub Actionsを触ってみた話
LT.22 GitHub Actionsを触ってみた話LT.22 GitHub Actionsを触ってみた話
LT.22 GitHub Actionsを触ってみた話
 
LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話 LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話
 
LT.21 SPIN法を活用した人心掌握術
LT.21 SPIN法を活用した人心掌握術LT.21 SPIN法を活用した人心掌握術
LT.21 SPIN法を活用した人心掌握術
 
LT.21 スゴいチームになるフィードバック術
LT.21 スゴいチームになるフィードバック術LT.21 スゴいチームになるフィードバック術
LT.21 スゴいチームになるフィードバック術
 
LT.20 コーディングとマジックナンバー
LT.20 コーディングとマジックナンバーLT.20 コーディングとマジックナンバー
LT.20 コーディングとマジックナンバー
 
LT.20 Wordpress x nuxt.jsで実現するSPA
LT.20 Wordpress x nuxt.jsで実現するSPALT.20 Wordpress x nuxt.jsで実現するSPA
LT.20 Wordpress x nuxt.jsで実現するSPA
 
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
 
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
 【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」 【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
 

CakePHP3入門