「FuelPHP」の版間の差分
ナビゲーションに移動
検索に移動
(→ドライバ) |
|||
| 333行目: | 333行目: | ||
|} | |} | ||
<blockquote>Authパッケージには、ドライバに必要なテーブルを作成するためのマイグレーションファイルが含まれる。作成要否は、Auth設定ファイルで決定</blockquote> | <blockquote>Authパッケージには、ドライバに必要なテーブルを作成するためのマイグレーションファイルが含まれる。作成要否は、Auth設定ファイルで決定</blockquote> | ||
| + | |||
| + | ==Tips== | ||
| + | |||
| + | ===WebAPI JSONデータを取得する=== | ||
| + | ---- | ||
| + | <pre> | ||
| + | <?php | ||
| + | |||
| + | class Controller_JsonSample extends Controller | ||
| + | { | ||
| + | function action_index() { | ||
| + | |||
| + | $url = 'http://hoge/json-api-sample.json'; | ||
| + | $curl = Request::forge($url, 'curl'); | ||
| + | |||
| + | $curl->set_method('get'); | ||
| + | $curl->set_params(array()); | ||
| + | |||
| + | $response = $curl->execute()->response(); | ||
| + | $json_data = json_decode($response); | ||
| + | |||
| + | $data = [ | ||
| + | 'http_response_code' => $response->status, | ||
| + | 'json_str' => htmlspecialchars(json_encode($json_data, JSON_PRETTY_PRINT), ENT_QUOTES, 'UTF-8'), | ||
| + | 'somevalue' => $json_date->somevalue, | ||
| + | ]; | ||
| + | |||
| + | $view = View::forge('jsonsample/jsonsample', $data); | ||
| + | return Response::forge($view); | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
2021年3月12日 (金) 04:44時点における版
目次
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
- アクセス
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
| クラス | 内容 |
|---|---|
| DB | DB操作 |
| DBUtil | DBユーティリティ |
| Migrate | DBマイグレーション |
| Model_Crud | CRUD操作を実装したモデル |
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設定ファイルで決定
Tips
WebAPI JSONデータを取得する
<?php
class Controller_JsonSample extends Controller
{
function action_index() {
$url = 'http://hoge/json-api-sample.json';
$curl = Request::forge($url, 'curl');
$curl->set_method('get');
$curl->set_params(array());
$response = $curl->execute()->response();
$json_data = json_decode($response);
$data = [
'http_response_code' => $response->status,
'json_str' => htmlspecialchars(json_encode($json_data, JSON_PRETTY_PRINT), ENT_QUOTES, 'UTF-8'),
'somevalue' => $json_date->somevalue,
];
$view = View::forge('jsonsample/jsonsample', $data);
return Response::forge($view);
}
}
© 2006 矢木浩人