| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

FuelPHP

提供: MyMemoWiki
2021年3月11日 (木) 14:17時点におけるPiroto (トーク | 投稿記録)による版 (→‎DB)
ナビゲーションに移動 検索に移動

| PHP |

FuelPHP

思想

  • 規約より設定
  • MVCパターン
  • テンプレートエンジンは、独自言語ではなくPHP
  • oilコマンドで、コードの自動生成、データベースマイグレーション、パッケージインストール、自作コードの実行が可能

環境構築

Ubuntu

XAMPPのインストール
oil クイックインストール
piroto@phpenv:~$ curl -L https://get.fuelphp.com/oil | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   479  100   479    0     0    447      0  0:00:01  0:00:01 --:--:--   449
~/.bashrcにPATHを追加
export PATH="/opt/lampp/bin:$PATH"
FuelPHPのインストールと新しいプロジェクトを作成

$ oil create test_prj
$ ls test_prj/
CHANGELOG.md     LICENSE.md  TESTING.md     composer.lock  docs  oil
CONTRIBUTING.md  README.md   composer.json  composer.phar  fuel  public
  • Apacheからアクセスできるようにシンボリックリンクを設定
$ cd /opt/lampp/htdocs/
$ ln -s ~/workspaces/test_prj/public test_prj
  • アクセス

Run fuelphp app.png

PHPUnitのインストール

PHPUnitのインストール

ライブラリ

配置場所


  • サードパーティ製のライブラリを配置する場所
    • fuel/vendor
    • fuel/packages

設定

設定ファイル

  • fuel/app/config フォルダに配置
ファイル名 内容
config.php メイン設定
db.php DB設定
routes.php ルーティング設定

環境

環境別の設定ファイル


クラス定数 意味
Fuel::DEVELOPMENT development 開発環境
Fuel::TEST test テスト環境
Fuel::STAGING staging ステージング環境
Fuel::PRODUCTION production 本番環境

環境の設定


  • 現在の環境は、FUEL_ENV の値により決定
  • .htaccessが利用できる環境では、
    • SetEnv FUEL_ENV production
    • 環境変数 FUEL_ENV が定義されていない場合のデフォルトは開発環境
    • 環境変数が設定できない場合、fuel/app/bootstrap.php の以下を設定を変更
    • Fuel::$env = \Arr::get($_SERVER, 'FUEL_ENV', \Arr::get($_ENV, 'FUEL_ENV', \Fuel::DEVELOPMENT));

設定ファイル


  • fuel/app/config のサブフォルダ

ログ

  • fuel/app/logs に日付別で出力される
  • 出力レベルは、config.php に指定
'log_threshold'  => Fuel::L_ALL,

MVC


URL基本


  • FuelPHP URLの基本パターン
http://hoge.jp/コントローラ/メソッド[/パラメータ1[/パラメータn]]

ディレクトリ構成

  • 全体
/
├── composer.json ・・・ Composer設定
├── composer.lock ・・・ Composerによりインストールされた情報
├── composer.phar ・・・ Composer実行環境(アーカイブ)
├── docs ・・・ ドキュメント
├── fuel
│   ├── app  ・・・ アプリケーション
│   ├── core  ・・・ FuelPHP本体
│   ├── packages  ・・・ FuelPHPおよびユーザー作成パッケージ
│   └── vendor  ・・・ Composerパッケージ
├── oil  ・・・ oilコマンド
└── public
	├── assets  ・・・ JavaScript ,CSSなど公開リソース
	└── index.php  ・・・ フロントコントローラ
  • app配下
app
├── bootstrap.php ・・・ Coreクラスの置き換え時などに使用するブートストラップファイル
├── cache  ・・・ キャッシュ
├── classes
│   ├── controller ・・・ コントローラ
│   ├── model  ・・・ モデル
│   └── presenter  ・・・ プレゼンタ(ViewModel)
├── config
│   ├── config.php  ・・・ 全体設定
│   ├── db.php ・・・ DB設定
│   ├── development ・・・ 開発環境用設定
│   ├── oil.php
│   ├── production  ・・・ 本番環境用設定
│   ├── routes.php ・・・ ルーティング設定
│   ├── staging ・・・ ステージング環境用設定
│   └── test
├── lang ・・・ 言語ファイル
├── logs ・・・ ログ
├── migrations ・・・ マイグレーション
├── modules ・・・ MVCをフォルダ別にまとめるモジュール機能
├── tasks ・・・ コマンドラインから実行されるタスク
├── tests ・・・ テスト
├── themes ・・・ 
├── tmp ・・・ 一次ファイル
├── vendor ・・・ サードパーティ製ライブラリを配置
└── views ・・・ ビュー

コントローラー


  • http://fuelphp.jp/docs/1.6/general/controllers/base.html
  • fuel/app/classes/controller ディレクトリに配置
  • "Controller_" というプレフィックス
  • URL を通じてリクエストされたメソッドは、"action_" というプレフィックス
  • HTTPメソッド名をアクション名の前につけることもできます
文字列を返す
<?php 
class Controller_Sample extends Controller {
    public function action_index() {
        return 'Sample!!';
    }
}
?>

ルーティング


  • fuel/app/config/routes.php で設定
  • リクエストされたURIと実行されるURIを配列で定義
  • 上から順に評価されマッチしたら終了
return array(
    'login' => 'user/login'
)

予約済みルート

  • _root_ : コントローラーがないURI、トップページにアクセスした場合
  • _404_ : コントローラーやメソッドが定義されていない場合のルート

正規表現によるルーティング

正規表現 意味
:any 任意の部分にマッチ
:segment URIの1つのセグメントにマッチ
:num 数字にマッチ
:alpha 文字にマッチ
:alnum 文字と数字にマッチ
'hoge/(:any)' => 'hoge/entry/$1',

名前付きパラメータ

  • URLセグメントに名前をつける
  • 先頭に、:をつける
'hoge/:year/:month' => 'hoge/entry',
  • コントローラーでは、$this->param('year'); などで参照できる

名前付きルート

  • ルートに名前をつける
  • 'name' => 'hello' が名前定義、helloが名前
  • Router::get('hello'); でURLを取得できる
'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'),

Coreクラス


Core

クラス 内容
Autoloader クラスの自動読み込み
Config 設定管理
Event イベント管理
Fuel FuelPHPコアクラス
Lang 言語切り替え
Log ログ管理
Module モジュールのロード
Package パッケージのロード
Security セキュリティ管理

DB

クラス 内容

HTML

クラス 内容

Authパッケージ


  • http://fuelphp.jp/docs/1.7/packages/auth/intro.html
  • Fuel における標準化された認証インターフェイスを提供
  • ユーザは自分自身で新しいドライバを書くことができ、 基本的なメソッドを保つことで、古いコードに新しいドライバを簡単に統合可能
  • インターフェースには 3 つのタイプのドライバが含まれています
    • login
    • group
    • ACL
  • login ドライバは、ユーザーのログインを処理し同時に複数の login ドライバを扱うことができます
  • ログインの種類を気にせず group ドライバを使用し、 2 つのタイプのログインを グループ化できます

ドライバ


  • ローカルアクセスを提供する2つのドライバが含まれ、1つ以上のデータベースのテーブルを使用
ドライバ 概要
Simpleauth 基本ドライバセット。ユーザー情報の確認にDBテーブルを利用、グループ、ロール、ACLは設定ファイルに格納。ユーザーレコードにシリアライズされメタデータを格納
Ormauth ユーザー、グループ、ロール権限すべての情報をDBに格納し、アクセスのために、ORMモデルを使用。APIはSimpleauthとほぼ互換
Opauth PHP用マルチプロバイダ認証フレームワーク composer でインストールされる。OAuth、OpenIDを使用

Authパッケージには、ドライバに必要なテーブルを作成するためのマイグレーションファイルが含まれる。作成要否は、Auth設定ファイルで決定