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/

CakePHP3入門