Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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にアクセスしてください。

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

ryurock
認定スクラムマスター 認定プロダクトオーナー http://www.scrumalliance.org/community/profile/rkimura2
https://github.com/ryurock
visasq
ビザスクは「知見と、挑戦をつなぐ」をミッションに、世界で1番のナレッジプラットフォームをつくっています。 様々なニーズにつなぐことで、実際に経験したことで得られた知識や意見を、知見として価値最大化します。組織、世代、地域を超えて、知見を集めつなぐことで、世界中のイノベーションに貢献します。
https://visasq.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away