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

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

この記事の所要時間: 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
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

&#91;/php&#93;
<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とか)は残念ながら使えません。あしからず。

Pocket

follow us in feedly

トラックバック: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 […]

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

検索
フィード
メタ情報

Return to page top