Cakephpstudy5 hacks jp
-
Upload
hiroki-shimizu -
Category
Documents
-
view
3.357 -
download
3
description
Transcript of Cakephpstudy5 hacks jp
コアライブラリのエレガントなハック
第 5 回 CakePHP 勉強会@Tokyo
ON 2010/5/29( 土 )
資料ファイル http://bit.ly/cakestudy_hiromi
About me 名前 : 清水 紘己( Shimizu Hiroki ) ひろみと呼んでください! @hiromi2424 CakePHP に関する行動
翻訳新機能の紹介TransitionComponentパッチ / チケット
歌うこと、ラーメンそして・・・ビールが大好き
めにう 導入 Hacks
コンポーネントヘルパモデルCakeRouteEngines
導入
どうしてハックするの?
アプリケーションポリシーの埋め込み
どうしてハックするの?
ディープデバッギング
どうしてハックするの?
スタブ ( モックオブジェクト )
どうしてハックするの?
アプリケーションポリシーの埋め込み ディープデバッギング スタブ ( モックオブジェクト )
どうやってハックするの? エイリアスみたいにマップされたオブジェ
クトを置換するこのセッションではこれに焦点を当てます
提供されてるフック
ユーザーランドインポート App/libs/* Core から App にコピー 置換、終了
Dirty Hack
不可能・エレガントでない Static Classes Basic functions
Use Lithium
Hacks
Hack components
Components - ACL 提供されているフック Configure::write('Acl.classname‘, ‘MyAcl’) MyAclComponent extends AclBase メソッドの実装
… いっぱい。
Components - Others マッピングされたオブジェクトの置換 Component::_loaded[$key]
オブジェクトへのリファレンス フックするタイミング
Initialize()
Components - Others
init() initialize() startup()
プロパティなどの設定
Component class flow
オブジェクトのマッピ
ング
StartingProcess
フック
Components - Others
Auth::__construct() Auth::initialize()
$loaded[‘Session’] 存在
存在$loaded[‘Auth’] Undefined
$loaded[‘Security’] Undefined
Session initialized NO YES
Auth initialized NO 初期化中
Security initialized NO NO
var $components = (‘Session’, ’Auth’, ‘Security’);
Components - Others $Component->enabled = boolean SessionComponent::__construct($base) 二重初期化の回避 オリジナルの設定を取得
AliasComponent
Hack helpers
Helpers マッピングされたオブジェクトの置換 $view::loaded[$key]
オブジェクトへのリファレンス フックするタイミング
beforeRender() View::_loadHelpers()
AliasHelper
Hacks Models
Models ClassRegistry::init() alias option Example
ClassRegistry::init(array(‘class’ => ‘MockPost’,‘alias’ => ‘Post’,
)) Initialization timing
Before Controller::constructClasses
Hacks CakeRoute
CakeRoute From 1.3 (Plugin | App)/libs/routes/my_route.php App::import(‘Lib’, ‘routes/MyRoute’) Router::connect(…, …, array(‘routeClass’ => ‘MyRoute’))
class MyRoute extends CakeRoute メソッドの実装
parse()match()ETC…
CakeRoute parse()
アクセスされた URL をパラメータに解析パラメータの追加・削除などの手伝い
CakeRoute match()
パラメータから正しい URL に変換するリバースルーティングURL の生成の手助け
CakeRoute Example
Mark Story が素晴らしいサンプルを書いてくれました
リバースルーティングのコードを追加
Engines
Cache (Plugin | App)/libs/cache/my_cache.php Cache::config(‘default’, array(‘engine’ => MyCache))
class MyCache extends CacheEngine メソッドの実装
write()read()delete()
CakeLog From 1.3 (Plugin | App)/libs/log/my_logger.php CakeLog::config(‘my’, array(‘engine’ => MyCache))
class MyLogger メソッドの実装
write() だけ! Example
if($type == ‘error’)ファイルにログするとともに管理者へメール
とか
まとめ ハックはまれにしか必要とされないのか CakePHP が本当に必要なのか できることとできないこと CakePHP2.0 の新機能 => エイリアス