ITエンジニアのための勉強会・イベントレポート情報メディア

とりあえずやってみる!FuelPHP 第7回 簡易ブログアプリを作ろう(1)
skill

とりあえずやってみる!FuelPHP 第7回 簡易ブログアプリを作ろう(1)

2018.03.20

 
  • このエントリーをはてなブックマークに追加

FuelPHPのMVCモデルもわかったところで、ここからは、簡単なブログアプリケーションを作成してみましょう。この簡易ブログアプリの開発を通して、DBやフォーム処理、認証機能などをみていきたいと思います。
開発は『第2回インストール』でインストールしたFuelPHPの環境に行なっていきます。また、データベースにはMySQLを使用します。

えとうさちこ

簡易ブログアプリの設計

機能の洗い出し

記事一覧ページと各記事の個別ページ(個別記事ページ)があります。認証機能付き管理画面を用意します。管理画面からは、記事の投稿や編集ができます。

簡易ブログということで、カテゴリは階層を持たず、1記事あたり1カテゴリを指定できるものとします。

開発の流れとしては、以下のとおり大きく2つのステップに分けてすすめていきます。

・ステップ1:フロントエンド(一覧ページと個別記事ページの表示機能)
・ステップ2:バックエンド(認証機能付き管理画面で記事投稿機能)

ステップ1:フロントエンドの表示機能

ページ遷移

フロントエンドのページ遷移は、「一覧ページ」→「個別記事ページ」とします。

図1

コントローラとメソッド名

一覧ページおよび個別記事ページの表示を制御するコントローラのクラス名とそのアクションメソッドの名前を決定します。

コントローラのクラス名は、「Controller_Post」とします。最初に表示される「一覧ページ」を表示するアクションメソッドの名前は、action_index()とし、次に記事IDを受け取り「個別記事ページ」を表示するアクションメソッドの名前は、action_article()とします。

図2

ビューのファイル名

ビューのファイル名は自由ですが、わかりやすいようにpostフォルダの中にまとめることにします。よって、「一覧ページ」のビューファイルを、post/index.php、「個別記事ページ」のビューファイルを、post/article.phpとします。
ここまでをまとめると以下のようになります。

表1

一覧ページ 個別記事ページ
アクション action_index() action_article()
URL http://localhost/myproject/post http://localhost/myproject/post/article
ビューファイル post/index.php post/article.php

コントローラのクラス名とアクションメソッド名が決まれば、FuelPHPではURLが自動的に決定されるので、それも表1に含めました。
また、上記のビューファイル以外に、今回の簡易ブログアプリではテンプレートファイルを使いたいと思いますので、テンプレートビューも準備することになります。テンプレートの詳しい説明は後ほど行います。

フォルダ構成

コントローラとビューのフォルダ構成は次のようになります。

fuel/
 
 |- app/
 
   |- classes/
 
     |- controller/
 
       |- post.php
… コントローラ
   |- views/
 
     |- template.php
… テンプレートビュー
     |- post/
 
       |- index.php
… 一覧ページビュー
       |- article.php
… 個別記事ページビュー

データベースを準備

フロントエンドの表示機能で必要となる記事テーブルとカテゴリテーブルを用意します。

1記事あたり1カテゴリを指定できるので、記事テーブルで指定したカテゴリIDを持つようにします。記事IDがプライマリーキー(主キー)でAUTOINCREMENTを設定します。

記事テーブル(post)の構造

カラム論理名カラム物理名型・桁備考
記事ID post_id int 主キー、AUTO_INCREMENT
記事タイトル post_title varchar(50)
記事本文 post_body text
カテゴリID post_category_id int
作成日時 post_created_at int
更新日時 post_updated_at int

カテゴリテーブルは、カテゴリIDがプライマリーキーでAUTOINCREMENTを設定します。

カテゴリテーブル(category)の構造

カラム論理名カラム物理名型・桁備考
カテゴリID category_id int 主キー、AUTO_INCREMENT
カテゴリ名 category_name varchar(50)
作成日時 category_created_at int
更新日時 category_updated_at int

テーブルの定義ができたので、実際にデータベースを用意(データベース名を「myproject」とします)し、テーブルを作成します。

テーブルを作成する方法として、FuelPHPのデータベースマイグレーションを使用する方法がありますが、今回はマイグレーションは使わずphpMyAdminからSQL文を実行する手動による作成にします。その際、SQL文は次のものを参考にしてください。

記事テーブル(post)のSQL文

CREATE TABLE IF NOT EXISTS `post` (
  `post_id` int(11) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `post_title` varchar(50),
  `post_body` text,
  `post_category_id` INT(11) NOT NULL,
  `post_created_at` int(11) NOT NULL,
  `post_updated_at` int(11) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

カテゴリテーブル(category)のSQL文

CREATE TABLE IF NOT EXISTS `category` (
  `category_id` int(11) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `category_name` varchar(50),
  `category_created_at` int(11) NOT NULL,
  `category_updated_at` int(11) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

次回はモデルの作成に進んでいきたいと思います。

原稿: えとうさちこ
SEとしてJavaでのASP開発を経て、現在は主にPHPでのWEBアプリ開発を行うWEBエンジニア。フロントエンドもサーバサイドも好き。インフラ勉強中。今後はRubyにも手を出すつもり。PCに向かっている以外はだいたいテニスに没頭。おかげさまで肩こり知らず。ブログやってます。
http://sachips.byeto.jp

とりあえずやってみる!FuelPHP 第7回 簡易ブログアプリを作ろう(1)

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW