プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • PHP
  • 【FuelPHP】概要
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【FuelPHP】概要

10.02

  • miyabisan2
  • コメントを書く

この記事は5分で読めます

「ヒューエルPHP」と読みます。

特徴

  • オートローダーという仕組みで必要な機能のみを読み込むためメモリを節約し高速に動くアプリケーションを作れる。
  • CakePHPに比べて機能がシンプルな分ルールに縛られずに開発ができる。
  • 日本語で書かれている公式ドキュメントがある。
  • PHP5.3以上がインストールされているサーバでのみ利用可能。

バージョン

2010年リリース
2011年1.0.1
2013年12月1.7

oilコマンド

fuelphpの便利なコマンドラインツール。これ経由でfuelphpのプロジェクトを作成したりできます。(なお、oilを使わなくてもgithubからcloneしても始められます。)

ディレクトリ構成

publicルートディレクトリになります。httpd.confのDocumentRootに指定します。
└index.php見に行くファイル
app
└config
 └config.php一番メインの設定ファイル。fuelphpのコア動作を設定できます。
 └routes.phpルーティングをカスタマイズしたい場合に使います。
 └db.phpデータベースの設定。接続先などの情報も記述します。
└classes
 └controllerコントローラの記述場所
 └presenterPresenter(ViewModelみたいなもの)の処理を記述します。
└viewsviewファイルの配置場所。配下にphpファイルを用意します。

コントローラー

FuelPHPはコントローラー名とメソッド名、引数によってURLパスが決まります。しっかり押さえておきましょう。

以下の場所に記述をしていきます。以下のように記述します。

1
2
3
app/classes/controller/welcome(コントロール名)
 
class Controller_Welcome(コントローラー名) extends Controller

メソッドの記述方法

1
2
3
4
public function action_hello($word,$word2){
  echo $word;
  echo $word2;
}

action_の後に何かやりたいこと(index)を記述というfuelPHP特有の文法になります。

$word(パスパラメータ1)、$word2(パスパラメータ2)

URLで渡されるパスパラメータが入ります。

URL

以下のようにURLが決まります。

1
http://localhost/welcome(コントローラー名)/hello(メソッド名)/引数1/引数2

なお、メソッド名をaction_indexとした場合はindexという指定がなくても実行されます。

view

コントローラー側

URL「コントローラー名/viewtest」が呼ばれた際にviews/viewtest.phpというファイルを呼び出す設定になります。

1
2
3
4
public function action_viewtest(){
  $word = "こんにちは";
  return View::forge('viewtest',$word);
}

view側

HTMLを記述していきます。こんな感じでviewを用意します。

1
2
3
4
5
app/views/viewtest.php
 
<html>
  <body><?php echo $word ?></body>
</html>

HTTPヘッダやステータスまで指定したい場合

Responseクラスを使います。Responseクラスを使わない場合は、bodyのみしか指定できませんが、使うことで「HTTPヘッダ」や「ステータス」などのHTTP通信全体の設定を柔軟に指定できます。

1
2
$view = View::forge("page/error")
return Response::forge($view,500)

用途

  • ステータスコードの値を状況によって変えたい場合
  • Cache-Controlの値を制御したい場合

set_headerメソッド

HTTPヘッダを定義したい場合に使うメソッドです。

遅延レンダリング

Viewオブジェクトが採用している仕組みです。forge実行時点ではまだテンプレートファイル自体は読み込まれていません。renderメソッドが呼ばれたタイミングで初めて読み込まれて内部に記述されている処理もそのタイミングで実行されます。

また、この仕組みを利用すればレンダリングの順番も制御したりできます。

基本的に「親view > 子view」の順に呼ばれることになるのですが子viewをrenderメソッドで先にレンダリングさせておけば「子view>親view」の順に呼ぶことも可能です。(なので、子から親に変数を渡したいなどといった用途がもし発生した場合はこれを使えば実装可能になる。)

リダイレクトしたい場合

Response::redirectメソッドを使います。これがコールされた場合はそのリクエストのプログラム処理はそこで終了します。また、ひとつ前のページに戻りたい場合はredirect_backメソッドを使用します。

viewを入れ子にする。

共通phpファイルなどを定義したいケースは多いと思います。

コントローラー側

1
2
3
4
5
6
7
8
9
public function action_viewtest(){
  $view = View::forge('layout')
  $view->header = View::forge('header');
  $view->footer = View::forge('footer');
  $view->content = View::forge('content');
  $view->set_global('aaa','渡したい値') // これを使うとheaderやfooterなどviewから再度呼び出しているviewにも値を渡せる。
  
  return $view;
}

view側

layout.php

1
2
3
4
5
6
7
<html>
  <body>
    <?php echo $header; ?>
    <?php echo $content; ?>
    <?php echo $footer; ?>
  </body>
</html>

テンプレートエンジンにtwigを使う。

composer.json

1
2
3
"require": {
  "twig/twig": "1.*",
}

上記のように追加します。

fuel/app/config/config.php

  • always_loadの記述のコメントアウトを解除します。
  • packagesのコメントアウトを解除して、「'parser'」を追加します。

viewファイルの命名

viewファイルは拡張子がphpではなく以下のような命名に変更します。

1
fuel/app/views/content.twig

controllerの中身

1
2
$data['name'] = '田中太郎';
return View::forge('content.twig',$data);

viewの中身

1
<p>{{name}}</p>

DB操作

事前に「config/development/db.php」にてデータベース接続情報を設定しておく必要があります。

登録

記述場所はとりあえずコントローラー直接でも構いません。

1
2
3
4
DB::insert('テーブル名')->set(array(
   'name'=>'田中太郎',
   'email'=>'tanaka@yahoo.co.jp'
))->execute();

取得

1
DB::select('*')->from('テーブル名')->execute();

フォーム

formからpostされてきたデータを取得するためのfuelPHPではAPIが用意されています。

テキストボックスの値の取得

1
Input::post('name');

バリデーション

例えば、名前に対して必須のルールを設定する場合は以下のように設定します。

1
2
3
4
5
6
7
8
9
10
11
$val = Validation::forge(); // バリデーションインスタンス生成
$val->add_field('name','名前','required'); // バリデーションルール適用
if($val->run()){
  echo '通過';
  exit;
}else{
  foreach($val->error() as $key => $ value) {
    echo $value->get_message();
  }
  exit;
}

メール送信

FuelPHPでは「Email::forge();」という構文でインスタンスを使って、メールの送信処理を実装します。詳しい使い方は公式サイトで確認しましょう。

ユーザー認証

  • usersテーブルを追加します。
  • app/config/config.phpの中のpackagesにauthを追加します。
  • Authクラスを使って処理を書いていきます。

セッション管理

Sessionクラスというクラスを使います。こんな感じでセッションに値を設定して取り出したりします。デフォルトはクッキーベースのセッションになります。(設定次第でファイルベース、DBベース、Redisベースなど選択も可能です。)

1
Session::set('key','値');

Presenter

MVCの派生であるMVP(Model-View-Presenter)のPresenterにあたる機能です。ViewModelといった方がわかりやすいかもしれません。FuelPHPでは1.7.2でViewModelクラスだったのが、Presenterという名称に変更になりました。controller/presenterの下にクラスは配置していきます。

用途

  • ビューに関するロジックを抽象化してコントローラーから切り離すために使う。
  • データの操作はしない。
  • データベースの呼び出しを含める。

Controller

app/classes/controller/xxx.php

Presenter::forgeでPresenterを呼び出します。setで設定した値はPresenterでそのまま使うことができます。

1
2
3
4
5
6
7
class Controller_xxx extends Controller {
  public function action_xxx {
    return Response::forge(
       Presenter::forge('xxx')->set('bbb',$display_data)
    )
  }
}

Presenter

app/classes/presenter/xxx.php

この$thisで設定したメンバー変数(aaa)はview側でそのまま使うことができます。

1
2
3
4
5
6
class Presenter_xxx extends Presenter {
  public function view() {
    $this => aaa = "テスト";
    $this=> bbb = $this->display_data;
  }
}

Cache

Cache::set

キャッシュにデータを保存する場合のメソッド

Cache::get

キャッシュからデータを取得する場合のメソッド

1
2
3
4
5
6
try {
  // キャッシュからデータ取得
  $content = Cache::get('test');
} catch (CachenotFoundException $e){
  // キャッシュが見つからない場合
}

エラーハンドリング

基本的にtry〜catchで例外処理できます。

UncaughtException

アプリケーションレベルでcatchされなかった例外を確実に処理できるExceptionで自動で組み込まれています。

HttpNotFoundException

fuelphp組み込みの404例外です。コントローラやアクションが見つからなかった場合は常にfuelphpがこの例外をスローします。スローした時にfuelphpは以下のような処理を実施します。

  • config/routes.phpの_404設定がある場合はそのURLを処理する。
  • なければ、エラー画面views/404.php(標準エラー画面)を処理する。

views/404.php

「fuel/core/views/404.php」に存在しデフォルトのレイアウトが用意されています。もしこれを上書きしたい場合は「fuel/app/views/404.php」に上書きしたいレイアウトを用意します。

Crudモデルを作成する

コマンド

1
php oil g model モデル名(postなど) カラム名1:型  カラム名2:型

以下のようなclassが生成されます。

1
2
3
4
class Model_Post extends ¥Model_Crud {
  protected static $_properties = array(カラム名1,カラム名2);
  protected static $_table_name = 'posts';
}

作成、読み取り、更新、削除などの操作が行えます。

スポンサーリンク
  • 2023 10.02
  • miyabisan2
  • コメントを書く
  • PHP
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 05.05

    【PHP】「変数」、「定数」、「配列」、「連想配列」、「条件分岐」、「論理演算子」、「ファイル操作」

  2. 2020 05.04

    【PHP】基本的なフォーム処理

  3. 2023 10.02

    【PHP】デバッグ方法まとめ

  4. 2020 05.04

    【PHP】「関数」(文字列操作関数など)、クラス

  5. 2020 05.04

    【PHP】フォームのセキュリティ対策

  6. 2020 05.04

    【PHP】外部のPHPファイルを使うには

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

CloudFrontのキャッシュ設定、キャッシュポリシ…

【PHP】デバッグ方法まとめ

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー