はじめに
「優しいIT」という理念の基、ITコンサルタントをしている亀井亮介と申します!
現在、仕事では要求分析・要件定義を中心に上流工程をしていますが、プログラムも書きます!
今回は、FuelPHPのscaffoldを利用してコードを自動生成します。自動生成をすることで、コードを平準化(誰が書いても同じソース)にして、コードの品質向上に寄与します!
●目的
Dockerで作成した開発環境のFuelPHP初期設定をします(Dockerはほとんど関係ありません)。
scaffoldを利用してCRUDスケルトン作成
●環境
Max OS X El Capitan
Docker 1.9.1
PHP Version 5.6.18
FuelPHP Version 1.7.3
MySQL 5.7.11
●詳細
phpMyAdminなどでデータベースとユーザを作成します。
例
データベース名 : database_name
ユーザ名 : username
パスワード : password
●データベース連携(開発環境)
開発環境なのでdevelopmentに記載します(developmentの他には本番環境のproduction、検証環境のstaging、テストのtestがあります)。
ファイル
return array(
'default' => array(
'connection' => array(
//-- Dockerを利用する場合hostは"192.168.99.100"
//-- dbnameに作成したデータベース名を記載
'dsn' => 'mysql:host=192.168.99.100;dbname=database_name',
//-- MySQLに設定したユーザ名を記載
'username' => 'username',
//-- MySQLに設定したパスワードを記載
'password' => 'password',
),
),
);
●設定ファイル(config.php)変更
変更点は下記の通りです。下記を怠るとエラーになります。
1. タイムゾーンコメントアウト
2. always_loadとORMのコメントアウトを外す
// 1. タイムゾーンコメントアウト
// 97行目あたり
'default_timezone' => 'Asia/Tokyo',
// 2. always_loadとORMのコメントアウトを外す
初期は下記のようにコメントアウトされています。
// 259行目あたり
// 'always_load' => array(
/* 略 */
// 'packages' => array(
// //'orm',
//),
/* 略 */
//)
コメントアウトを外します。
'always_load' => array(
/* 略 */
'packages' => array(
'orm',
),
/* 略 */
)
●scaffoldを利用してCRUDスケルトン作成
scaffoldを利用してスケルトンを作成します。個別にコントローラーやビューのスケルトンを作成できますが、ルーティングとか面倒なので、scaffoldを利用してカスタマイズという手法をとります。
サンプル:ユーザIDと文字列型で50文字のpostという名前のコンポーネント
(注記:実行結果はAPPPATHのところをセキュリティ上の配慮で加工しています。ご了承ください。)
$ oil g scaffold -f post title:varchar[50] body:text user_id:int
Creating migration: APPPATH/migrations/002_create_posts.php
Creating model: APPPATH/classes/model/post.php
Creating controller: APPPATH/classes/controller/post.php
Creating view: APPPATH/views/post/index.php
Creating view: APPPATH/views/post/view.php
Creating view: APPPATH/views/post/create.php
Creating view: APPPATH/views/post/edit.php
Creating view: APPPATH/views/post/_form.php
これでスケルトンが作成されました。
スケルトンで作成されたモデルを基にマイグレーション(データベースに構造を反映)します。
$ oil refine migrate
Performed migrations for app:default:
001_create_posts
※注記 FuelPHPの仕様上、マイグレーションしたテーブル名は複数形になります。
例:"post"の場合のテーブル名は"posts"となり、モデルやコントローラーのファイル名などは"post"
●http://192.168.99.100/post にアクセス
Crypto key errorと怒られる場合はキーを作成します。
●APPPATH/config/crypt.phpを作成
画面に表示している下記をそのままコピーし、新規作成したcrypt.phpにペーストし保存します。
<?php
/**
* Part of the Fuel framework.
*
* @package Fuel
* @version 1.7
* @author Fuel Development Team
* @license MIT License
* @copyright 2010 - 2015 Fuel Development Team
* @link http://fuelphp.com
*/
return array (
'crypto_key' => '秘密', // 半角英数字記号の文字列
'crypto_iv' => '秘密', // 半角英数字記号の文字列
'crypto_hmac' => '秘密', // 半角英数字記号の文字列
);
●http://192.168.99.100/post にアクセス
FuelPHP scaffold
スケルトンが作成されたようです。Add new Postをクリックして、新規登録画面に遷移して、値を入力して登録します。
Saveをクリックすると、保存されます。
●カスタマイズ
M モデル
V ビュー
C コントローラー
ができるので、これらをカスタマイズして開発を進ます。
各ファイルパス
"post"という名前でscaffoldした場合は下記パスに各ファイルが生成されるのでお好きなように
モデル : APPPATH/classes/model/post.php
コントローラー : APPPATH/classes/controller/post.php
ビュー 新規登録 : APPPATH/views/post/create.php
ビュー 編集 : APPPATH/views/post/edit.php
ビュー 詳細表示 : APPPATH/views/post/view.php
ビュー 一覧表示 : APPPATH/views/post/index.php
ビュー 登録/編集共通フォーム : APPPATH/views/post/_form.php
おすすめ本
リーダブルコード
レガシーコード改善ガイド
プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化 Kindle版
サイトマップ(未投稿あり)
理念・価値・ビジョン・使命
テスト駆動開発を重点においた規則
コーディング規則「優しいコードを書こう」(FuelPHP)
命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」
Docker+PythonでWebアプリケーション開発
開発しやすい環境構築(Docker+PHP)
Dockerを利用しApacheにPHP環境 + Eclipseを連携
Dockerを利用したFuelPHP開発環境構築
Docker利用したFuelPHP開発環境の初期設定とscaffoldを利用してCRUDスケルトン作成
FuelPHPのデータベースマイグレーション
Raspberry Pi 3 (ラズパイ)とpythonで遊ぼう
Raspberry Pi 3インストール→無線LAN→日本語入出力→Macから操作
Raspberry Pi 3でプログラミングをする Node-REDと普通にプログラミング
Raspberry Pi 3でpythonを使いLEDを光らせる(Hello World)
Raspberry Pi 3でスイッチの状態を検出する
Raspberry Pi 3でpythonを使いサーボモータを動かす