こないだのCakePHP勉強会でやったネタですが、需要がありそうなんで書きます。
CakePHPは1.2Finalになって色々と改良が成されて拡張性も増えたのですが、良くなってきた分、さらに色々とやりたくなるのが人の常です。そこでフレームワークのソースをどうしても書き換えたい時にcake/を触るのではなく、せめてapp/でフレームワークソースを置き換えましょう、という話です。
[目標] ConnectionManagerをapp/に置く
デモではDispatcherの置き換えをやったのですが、cake bake diaryさんのエントリのように需要があるかもなので、ConnectionManagerをapp/に置いてフレームワークに読ませようと思います。
1. ConnectionManagerのソースをapp/以下にコピー
ConnectionManagerを一から書いても良いのですが、それも大変なので、まずフレームワークのConnectionManagerのソースをapp/以下にコピーします。
ConnectionManagerはcake/libs/model/connection_manager.phpになるので、それに倣ってapp/modles/connection_manager.phpにコピーします。
$ cp -a cake/libs/model/connection_manager.php app/models/
2. ConnectionManagerのソースを変更する
app/にコピーしたConnectionManagerを変更します。ここでは読み込まれたソースが分かりやすいように先頭にファイルパスをvar_dump()しておきます。
[app/models/connection_manager.php]
<?php var_dump(__FILE__); // <---追加 /* SVN FILE: $Id: connection_manager.php 8120 2009-03-19 20:25:10Z gwoo $ */ /** * Datasource connection manager * * Provides an interface for loading and enumerating connections defined in app/config/database.php * * PHP versions 4 and 5 [/php] <h3>3. ConnectionManagerをフレームワークに読ませる</h3> <p>最後にapp/のConnectionManagerをフレームワークに読み込ませます。これにはApp::import()のキャッシュ機能を使います。</p> <p>方法は簡単で、bootstrap.phpに以下のように書くだけでokです。</p> <p>[app/config/bootstrap.php]</p> App::import('Core', 'ConnectionManager', array('file' => '../app/models/connection_manager.php'));
ブラウザからアクセスすると下のように画面上に2.で書いたパスが表示されて、[app/models/connection_manager.php]が読み込まれているのが分かります。
あとはこのソースをガシガシ書き換えていけばokです。
いざという時使えるかも
少しトリッキーな方法ですが、フレームワークのソースを書き換える手段としては覚えておいて損は無いと思います。
ただし、この方法はApp::import()の機能を利用しているので、フレームワークがApp::import()で読まないソース(Objectとか)は残念ながら使えません。あしからず。
- Newer: 第2回CakePHP関西勉強会も盛り上がりました&発表資料
- Older: CakePHP routes.phpの確認はユニットテストで
トラックバック:4
- このエントリーのトラックバックURL
- /blog/2009/05/cakephp_app_import_swap_framework.html/trackback
- Listed below are links to weblogs that reference
- CakePHP フレームワークのソースをapp/で置き換える from Shin x blog
- trackback from ラボブログ 09-05-28 (木) 14:21
-
CakePHP + Ktai Library 非公式 Wik…
スパイスラボ神部です。 先日、第4回CakePHP勉強会@Tokyo に参加してきました。 特に聞きたかった K-tai Library のセッションも聞くこと… (more…)
- trackback from Doodle Jump apk 11-10-17 (月) 14:19
-
Doodle Jump apk Hi there I favor your post, nice blog!…
Hi there I favor your post, nice blog!…
- trackback from best used cars to buy 12-03-02 (金) 4:22
-
Thank you for the {auspicious|good} writeups. It in fact was a amusement account it. Look advanced to {far|more} added agreeable from you! {By the way|However}, how {can|could} we communicate?…
Always do your best. What you plant now, you will harvest later….
- pingback from CakePHP1.3系でhttpsを経由するととセッションIDの再作成が出来ない問題の対応方法 | DASALOG -ださろぐ 13-02-22 (金) 20:14
-
[…] (参考)CakePHP フレームワークのソースをapp/で置き換える – Shin x blog […]