FuelPHPでサービス実装後に別サービス追加

既存サイトにサービスをFuelPHPで追加。その後、別サービスをFuelPHPで追加する場合。

作成日:2018-03-13, 更新日:2018-08-10

経緯と希望

1.既存サイトにユーザー専用ページ(/user)を追加。
2.しばらくしてから、vip専用ページ(/vip)を新たに追加することになった。

最終的には下記のようなサイト構成
・http://example.com/ - 既存サイト(静的 or Wordpress or FuelPHP以外のフレームワークなど)
・http://example.com/user - FuelPHPで新サービス追加
・http://example.com/vip - 新サービスをさらにFuelPHPで追加する

「ユーザー専用ページ(/user)」を追加したときは「vip専用ページ(/vip)」を想定していないので諸々面倒。

元々の状態

▼元々は下記のような感じの構成のサイト。
・/home/htdocs/〇〇〇

▼次に、既存サイトに「ユーザー専用ページ(/user)」を追加した。
・/home/fuelphp
・/home/htdocs/〇〇〇
・/home/htdocs/user
※「/home/htdocs/user/index.php」で「/home/fuelphp」のPATHを設定。

vip専用ページ(/vip)を追加

基本、modelやviewなどは、「ユーザー専用ページ(/user)」と同じ。
controllerと新たに追加するmodelなどだけが違う。

▼構成を下記のようにしてルーティングでどうにかする。
・/home/fuelphp
・/home/htdocs/〇〇〇
・/home/htdocs/user
・/home/htdocs/vip

処理

出来る限り最初に追加した「/user」を修正したくない。

routes.phpの用意

・「/home/fuelphp/app/config/routes.php」を複製して「/home/fuelphp/app/config/routes_user.php」にする。
・「/home/fuelphp/app/config/routes.php」を複製して「/home/fuelphp/app/config/routes_vip.php」にする。
※各ファイルの修正は後でする。

vip/index.phpでルーティングファイルのPATH指定

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

~ 略 ~
define('PATH_CONFIG_ROUTES', 'routes_vip.php');
~ 略 ~

※「user/index.php」は修正したくないので・・・修正しない。

routes.phpの修正

「routes_user.php」と「routes_vip.php」に割り振るようにする。
※「user/index.php」は修正したくないので、条件分岐させる。

▼「/home/fuelphp/app/config/routes.php」

if ( !defined('PATH_CONFIG_ROUTES') ) {
  $path = 'routes_user.php';
}
else {
  $path = PATH_CONFIG_ROUTES;
}
return include APPPATH . 'config/' . $path;

/vip用のコントローラー準備

ルーティングの設定をする前に先にコントローラーのフォルダを準備しておく。
※後回しでも大丈夫。

「/user」はすでに「/home/fuelphp/app/classes/controller」の下で色々と使っている。

・・・出来れば良い感じに分けたいけど・・・ムリなので「/home/fuelphp/app/classes/controller/vip」を用意する。
※「/vip」以下は全てココに入れるようにする

routes_user.phpの修正

「http://example.com/user/vip/〇〇〇」が表示されてしまうのを禁止。

▼「/home/fuelphp/app/config/routes_user.php」

~ 略 ~
'vip/(:any)'  => '404/index',
~ 略 ~

routes_vip.phpの修正

・「http://example.com/user/hoge」は「controller/hoge」を読む込む。
・「http://example.com/vip/hoge」は「controller/hoge」ではなく「controller/vip/hoge」を読む込むようにする。

▼「/home/fuelphp/app/config/routes_vip.php」

<?php
return array(
  //'_root_'  => 'top/index',  // The default route
  '_root_'  => 'vip/top/index',
  '_404_'   => '404/index',    // The main 404 route
  
  '(:any)'  => 'vip/$1',
);

※「_root_」の設定も合わせて修正(適宜、既存のルーティング設定に合わせる)
※「_404_」は既存のままでいいので修正しない(適宜、既存のルーティング設定に合わせる)

関連項目

FuelPHPを一つのサイトで複数使いたい
一つのサイトでFuelPHPを複数使う(簡略版) - 使い回す箇所が少ない場合はコッチのほうが良いと思う。
1サイトで複数のFuelPHPを使うときのメモ - ややこしくなってきたのでまとめてみた。