一つのサイトでFuelPHPを複数使う(簡略版)

やり方はいくつかあるが・・・私にとって使い勝手が一番よさげな方法。

作成日:2018-02-28, 更新日:2018-08-10

基本

サイト自体をFuelPHPで構築しているならいいんだけど、構築されたサイトにFuelPHPを追加。
その後、別コンテンツでもFuelPHPを追加しなくちゃいけない・・・そんなとき。

2018/02/28時点

「model、utilなど一部だけどうにかしたい・・・」ってトコが微妙。

▼サイト構成
http://〇〇〇
http://〇〇〇/user ← FuelPHPで管理
http://〇〇〇/admin ← FuelPHPで管理
▼フォルダ構成
・/home
 ・/fuelphp ← ベースになるFuelPHP
 ・/fuelphp_admin ← 追加するFuelPHP
 ・/htdocs
  ・/user ← 「/home/fuelphp」を使うWebページ
  ・/admin ← 「/home/fuelphp_admin」を使うWebページ
/home/fuelphp
ベースになるFuelPHPで、特に何かする必要は無い。
/home/fuelphp_admin
追加するFuelPHPでベースになるFuelPHPを複製してゴニョゴニョする。

・「/home/fuelphp/app」を複製して「/home/fuelphp_admin/app」
・「/home/fuelphp/.htaccess」を複製して「/home/fuelphp_admin/.htaccess」

/home/htdocs/user
ベースになるFuelPHPを使うWebページで、特に何かする必要は無い。
/home/htdocs/admin
追加するWebページでベースになるWebページを複製してゴニョゴニョする。

・「/home/htdocs/user」を複製して「/home/htdocs/admin」

▼「/home/htdocs/admin/index.php」

略

$slfPath = '/../../fuelphp_admin';
$cmnPath = '/../../fuelphp'; // 使い回したいFuelPHPのpath。

// 使い回さない「app」のpath。
define('APPPATH',    realpath(__DIR__.$slfPath.'/app/').DIRECTORY_SEPARATOR);

// 使い回したい「app」のpath。
define('APPPATH_COMMON', realpath(__DIR__.$cmnPath.'/app/').DIRECTORY_SEPARATOR);

// 使い回したい「packages、core」のpath。
define('PKGPATH',  realpath(__DIR__.$cmnPath.'/packages/').DIRECTORY_SEPARATOR);
define('COREPATH', realpath(__DIR__.$cmnPath.'/core/')    .DIRECTORY_SEPARATOR);

略

「/fuelphp_admin」で「/fuelphp」内の「model/〇〇〇」を使う

同一のファイルを作り、インクルードして使う

・「/home/fuelphp/app/classes/model/hoge.php」を複製して「/home/fuelphp_admin/app/classes/model/hoge.php」

▼「/home/fuelphp_admin/app/classes/model/hoge.php」の中身

<?php
// include_once (APPPATH_COMMON . '/classes/model/hoge.php'); // ←2018/03/01 コメント。ファイルごとにファイル名を指定するのが面倒だから。
include_once (str_replace(APPPATH, APPPATH_COMMON, __FILE__)); // ←コピペしやすいように置き換えをする

※「util/〇〇〇」等も同様な感じでOK。

「/home/fuelphp_admin/app/bootstap.php」でクラスを追加したほうがラク。
でも、メンテ時に「ファイルが無い!」とプチパニックになりそうだから面倒だけどインクルードする方が良さげ。

/config内のファイルの使い回し

出来ないかも。

includeしてざっくりと試したらダメだった。他の影響があったかもしれない。

注意

下記の場合。
・「/user」でFuelPHPを作る
・「/admin」でFuelPHPを作り、「/user」を「include」させる

\uri::create()

ビューファイルを使い回すときは注意が必要。
※ビューに限らず「\uri::create()」を使うとき。

▼「\uri::create('hoge')」で作られるURLが違うかもしれない。

FuelPHP 「echo \uri::create('hoge');」の結果
/user http://〇〇〇/user/hoge
/admin http://〇〇〇/admin/hoge

セッション

「config/session.php」内で「'path' => APPPATH . '/tmp'」等の記述を合わせる必要あり。
※authなどセッションが絡まないなら気にしなくていい。

▼「path」を合わせない場合:「/user」でログイン。

FuelPHP 「var_dump(\Auth::check());」の結果
/user true
/admin false

関連項目

FuelPHPを一つのサイトで複数使いたい
FuelPHPでサービス実装後に別サービス追加 - 使い回す箇所が多い場合はコッチのほうが良いと思う。
1サイトで複数のFuelPHPを使うときのメモ - ややこしくなってきたのでまとめてみた。