【fuelphp】共通処理をPackage化して複数サイトで使う方法
はじめに
1つのfuelphpで複数サイト(一般ユーザが見るサイトと管理者が見るサイト等)を共存させるというのは僕はよくやります。
で、以前に以下の記事で共通処理をシンボリックリンク化してしまう方法を紹介しました。
fuelphpで複数サイトを構築する方法 - とりあえずphpとか
しかし、サーバーが複数台になった場合などでは
・サーバーを増やすたびにシンボリックリンク貼るのか?
・そもそもなんでそんな複雑の作りにしてるんだ?
とか思ったので今回の修正を考えました
構成
project ├── fuel │ ├── app │ │ ├── ・・・ │ ├── app_admin │ │ ├── ・・・ │ ├── packages │ │ ├── mypkg // ★ここに共通クラス・定義を置いてゆく │ │ ├── ・・・ ├── public ├── public_admin
パッケージ作成
packages以下の構成
mypkg ├─ bootstrap.php ├─ classes // ★共通クラスはココに追加してゆく │ ├─ model │ │ ├ user.php │ │ ├ ・・・ │ ├─ util │ ├── ・・・ ├─ config // ★共通定義はココに追加してゆく │ ├─ mypkg.php
bootstrap.php
<?php \Autoloader::add_core_namespace('Mypkg');
classes/model/user.php
<?php namespace Mypkg class Model_User extends \Model { public static function get() { ・・・ } }
config/mypkg.php
<?php return array( "hoge" => array(1,2,3), );
パッケージ呼び出し
fuel/app/bootstrap.php(準備)
・・・ // Register the autoloader \Autoloader::register(); // 作ったパッケージを使える様に \Autoloader::add_namespace('Mypkg', PKGPATH . "mypkg/classes/"); ・・・
fuel/app/tasks/test.php(実際に使用)
<?php namespace Fuel\Tasks; class Test { public static function run() { // 共通クラス呼び出し $memberList = \Mypkg\Model_User::get(); // 共通定義呼び出し \Config::load("mypkg",true); $config = \Config::get("mypkg.hoge"); } }
参考にさせていただいたサイト
http://tech.ewdev.info/2014/01/1373/
以上です