😀

FuelPHP【入門】-- CRUDを作った時のメモ(インストールからCRUD作成まで) --

2022/11/28に公開約5,000字

FuelPHPを触ることになったのでまずは練習にCRUD(create,read,update,insert)環境を作ることにした時のメモです。
フレームワーク自体はfuelのgitで管理することを目的とします。

環境

  • centos6.3
  • fuelPHP1.5.3

事前準備に必要なもの

  • php5.3以上
  • mysql

参考にしたサイト

公式サイトからFuelPHPを取得する

公式サイトにいってDownloadボタンをポチッと押して展開したいディレクトリでunzipする。
(今回はlo.fuel.master.orgってディレクトリにDLしたfuelPHPを展開する)
公式では

# oil を Web からクイックインストールします
$ curl get.fuelphp.com/oil | sh
# oil が、たった今、インストールされました。Sites ディレクトリで blog プロジェクトを作ります
$ cd Sites/
$ oil create blog

上記のような形で記載されていますが、これをすると/usr/local/binにoilコマンド(genarateコマンド)がインストールされてしまうので複数のfuelPHPをローカル運用するときに困りそうなのでDLしてくることにしました。

構成はこんな感じ

lo.fuel.master.org/ #fuelPHP本体の落とし先(適時自分の環境に読み替えてください)
| docs/
| fuel/
| public/
| | assets/
| | index.php #ドキュメントルート
| CHANGELOG.md
| CONTRIBUTING.md
| README.md
| TESTING.md
| build.xml
| oil

core,packageをgitでサブモジュール化する

FuelPHP自体のアップデート時に対応できるように一旦落としたcore,packageを削除します。

cd lo.fuel.master.org
rm -rf fuel/core fuel/packages
mkdir fuel/packages

git(submodule)を実行する

cd lo.fuel.master.org

git submodule add git://github.com/fuel/core.git fuel/core
git submodule add git://github.com/fuel/oil.git fuel/packages/oil
git submodule add git://github.com/fuel/auth.git fuel/packages/auth
git submodule add git://github.com/fuel/parser.git fuel/packages/parser
git submodule add git://github.com/fuel/orm.git fuel/packages/orm
git submodule add git://github.com/fuel/email.git fuel/packages/email
git submodule add git://github.com/fuel/log.git fuel/packages/log
git submodule add git://github.com/fuel/docs.git docs

チェックアウト

cd lo.fuel.master.org

git submodule foreach 'git checkout 1.5/master'

設定ファイル(fuel/app/config/development/db.php)の編集

色々なフレームワーク同様にenvirment(環境設定)毎に設定ができます。デフォルトの環境設定はdevelopmentなのでfuel/app/config/development/db.phpでdbの設定を行います。
ちなみに環境変数を指定しているところはfuel/app/bootstrap.phpにあります。

Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::DEVELOPMENT);

fuel/app/config/development/db.php

fuel/app/config/development/db.php
<?php
/**
 * The development database settings. These get merged with the global settings.
 */
return array(
	'default' => array(
		'type' => 'mysqli',
		'connection'  => array(
			'hostname' => 'hostname',
			'port' => '',
			'database' => 'database名',
			'username'   => 'ユーザー名',
			'password' => 'パスワード',
			'presistent' => false
		),
		'enable_cache' => false,
		'profiling' => true,
	),
);

ormの設定

ORMの設定を有効にします

fuel/app/config/config.php
<?php
.
.
.
	//ここの項目のコメントを外してください
	'always_load'  => array(
		'packages'  => array(
			'orm',
		),
.
.
.
//デフォルトのコメントが記載されていますが割愛します
	),

scaffold機能でCRUD環境を作る

scaffold概要(Ruby on Railの説明)から参照で

4.1 scaffold概要
Railsには、コードを自動生成するジェネレータが複数用意されています。ここでは、「scaffold」というジェネレータを紹介します。
scaffold(「足場」という意味)は、データベースのテーブルへの登録(CREATE)、参照(READ)、更新(UPDATE)、削除(DELETE)(英語の頭文字をとって、「CRUD」といいます)を行うWebアプリケーションのひな形となるソースコードを自動生成します。scaffoldを実行させれば、「足場」という名の通り、最低限のCRUDを行うWebアプリケーションを作成することができます。
実際の開発においては、使用する機会が少ないかと思いますが、ここではRailsの基本構造を知るために利用します。

公式でもrailの概念を借用しましたと書いてあります

cd lo.fuel.master.org
php oil g scaffold monkey name:string description:text
    Created model: APPPATH/classes/model/monkey.php
    Created migration: APPPATH/migrations/001_create_monkeys.php
    Created controller: APPPATH/classes/controller/monkeys.php
    Created view: APPPATH/views/monkeys/index.php
    Created view: APPPATH/views/monkeys/view.php
    Created view: APPPATH/views/monkeys/create.php
    Created view: APPPATH/views/monkeys/edit.php
    Created view: APPPATH/views/monkeys/_form.php

指定したmonkeyがcontrollerとmodel名でname:string description:textがテーブルmonkeysの内容を示しています

マイグレーション(migrate)の実行

マイグレーションとはDBの設定反映を行うためのコマンドです。
oilのscaffoldで作成したmodelの設定反映をDBにも行うためのものです。
APPPATH/migrations/003_create_monkeys.phpを見るとわかりやすいです。

fuel/app/migration/001_create_monkeys.php
<?php

namespace Fuel\Migrations;

class Create_monkeys
{
	public function up()
	{
		\DBUtil::create_table('monkeys', array(
			'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true),
			'name' => array('constraint' => 255, 'type' => 'varchar'),
			'description' => array('type' => 'text'),
			'created_at' => array('constraint' => 11, 'type' => 'int', 'null' => true),
			'updated_at' => array('constraint' => 11, 'type' => 'int', 'null' => true),

		), array('id'));
	}

	public function down()
	{
		\DBUtil::drop_table('monkeys');
	}
}

最初にテーブルを作成したいのでup()を実行することになります。

cd lo.fuel.master.org
php oil refine migrate

http://localhost/monkeyにアクセスする

これでCRUD環境ができていますのでhttp://localhost/monkeyにアクセスしてください。

実際の開発ではあまり使う機会は少ないと思いますが、最初の一歩にはソースの理解と流れを知るにはちょうどいいかと。

Discussion

ログインするとコメントできます