Home > CakePHP | PHP > CakePHP フレームワークのソースをapp/で置き換える

CakePHP フレームワークのソースをapp/で置き換える

  • 2009-05-28 (木) 12:07
  • CakePHP | PHP
  • このエントリーをはてなブックマークに追加
この記事の所要時間: 135

こないだの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:
  1. <?php
  2. var_dump(__FILE__); // <---追加
  3. /* SVN FILE: $Id: connection_manager.php 8120 2009-03-19 20:25:10Z gwoo $ */
  4. /**
  5. * Datasource connection manager
  6. *
  7. * Provides an interface for loading and enumerating connections defined in app/config/database.php
  8. *
  9. * PHP versions 4 and 5

3. ConnectionManagerをフレームワークに読ませる

最後にapp/のConnectionManagerをフレームワークに読み込ませます。これにはApp::import()のキャッシュ機能を使います。

方法は簡単で、bootstrap.phpに以下のように書くだけでokです。

[app/config/bootstrap.php]

PHP:
  1. App::import('Core', 'ConnectionManager', array('file' => '../app/models/connection_manager.php'));

ブラウザからアクセスすると下のように画面上に2.で書いたパスが表示されて、[app/models/connection_manager.php]が読み込まれているのが分かります。

あとはこのソースをガシガシ書き換えていけばokです。

いざという時使えるかも

少しトリッキーな方法ですが、フレームワークのソースを書き換える手段としては覚えておいて損は無いと思います。

ただし、この方法はApp::import()の機能を利用しているので、フレームワークがApp::import()で読まないソース(Objectとか)は残念ながら使えません。あしからず。

トラックバック:3

このエントリーのトラックバックURL
http://www.1x1.jp/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....

Home > CakePHP | PHP > CakePHP フレームワークのソースをapp/で置き換える

検索
フィード
メタ情報

Return to page top