スライド1: 自己紹介• nazo• 佐藤琢哉• 株式会社RYUS• rhacoja• http://d.hatena.ne.jp/nazone/• http://twitter.com /nazo• http://wassr.jp/user/nazo/• 自腹で東京から来ました
スライド2: XO O PSのモジュール開発にY iを使う株式会社RYUS 佐藤琢哉(nazo)
スライド3: 注意
スライド4: ほとんどの人には意味のない話です
スライド5: XO O PS Cube
スライド6: • ブログとか• カレンダーとか• イベント予約とか• アクセス解析とかモジュール• 画面の一部に配置する何かとか• 特定の機能を拡張するものとか• ようは機能単位
スライド7: モジュールを作る
スライド8: どうやって作るの?
スライド9: xoops_version.php<?php/** * * @ package Legacy * @ version $Id: xoops_version.php,v 1.10 2008/03/15 08:25:48 m inahito Exp $ * @ copyright Copyright 20052007 XO O PS Cube Project <http://xoopscube.sourceforge.net/> * @ license http://www.gnu.org/licenses/gpl.txt G NU G ENERAL PUBLIC LICENSE Version 2 * */$m odversion['nam e'] = _M I_LEG ACY_NAM E;$m odversion['version'] = 1.04; // 2.1.4$m odversion['description'] = _M I_LEG ACY_NAM E_DESC;$m odversion['author'] = "";$m odversion['credits'] = "XO O PS Cube Project";$m odversion['help'] = "help.htm l";$m odversion['license'] = "G PL see LICENSE";$m odversion['im age'] = "im ages/legacy.png";$m odversion['dirnam e'] = "legacy";$m odversion['cube_style'] = true;…
スライド10: • m ainfile.php• header.php• footer.phpあとはご自由にどうぞ• を読み込むくらい
スライド11: ( ゚д゚ )
スライド12: 自由すぎてわからん!
スライド13: だってフレームワークじゃないし…
スライド14: 仕方ないので
スライド15: CakePHPで開発できるようにしたよ!
スライド16: 実戦投入済
スライド17: そこそこ便利
スライド18: で さ l ,ィ/! / /l/!,l /厶, だ れ i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ よ る l | |_|_|_|/| / /__!__ |/!トi i/-- 、 レ!/ / ,-- レ、⌒Y⌒ヽ ね の _ゝ|/'/⌒ヽ ヽト、|/ '/¯`ヾ 、ヽト、N'/⌒ヾ ,イ¯`ヾ,ノ! l は 「 l ′ 「1 /てヽ′| | | 「L! ' i'ひ} リ ヽ | ヽ__U, 、ヽ シノ ノ! ! |ヽ_、ソ, ヾシ _ノ _ノ-┐ ,√ ! ¯ リ l ! ¯ ¯ 7/ レ'⌒ヽ/ ! | 〈 _人__人ノ_ i く //!人_,、ノL_,iノ! /! ヽ r─‐- 、 「 L_ヽ r─‐- 、 u ノ/ / / lト、 \ ヽ, -‐┤ ノ キ 了\ ヽ, -‐┤ //ハ キ { / ヽ,ト、ヽ/!`hノ ) モ |/! 「ヽ, `ー /) _ ‐'ハ ャ ヽ/ r-、‐' // / |-‐ く | > / / `'//-‐、 /ハ ハ > /\\// / /ヽ_ ! イ ( / / // / `ァ-‐'ハ ハ / /! ヽ レ'/ ノ > ' ∠ -‐ ¯ノヽ / { i l ! / フ / -‐ /¯/〉 〈\ /!(作ったのはnazoですが)(使っているのもnazoですが)
スライド19: CakePHPは悪くないんだけど
スライド20: 他の使いたい
スライド21: それなら
スライド22: Yii
スライド23: Y i Fram ework
スライド24: (W iじゃないよ)• (都合で画像は削除されております)
スライド25: PRADO の人あたりがいろいろ参考にして作った新フレームワーク
スライド26: 組み込んだ
スライド27: そのままだと動かない
スライド28: 修正点
スライド29: XO O PSのコードはclass_existsの第二引数を指定していない• PHP4のコードなので…XCube_DelegateUtils::ca l('Legacy.Event.G etHandler', new XCube_Ref($handler), $nam e, $optional);if (is_object($handler)) {$handlers[$nam e] =& $handler;return $handlers[$nam e];} if ( file_exists( $hnd_file = XO O PS_RO O T_PATH.'/kernel/'.$nam e.'.php' ) ) { require_once $hnd_file; } $class = 'Xoops'.ucfirst($nam e).'Handler'; if (class_exists($class)) { $handlers[$nam e] = new $class($G LO BALS['xoopsDB']); } }
スライド30: • 当然エラー=autoloadが呼ばれるpublic static function autoload($classNam e){}// use include so that the error PHP file m ay appearif(isset(self::$_coreClasses[$classNam e]))include(YII_PATH.self::$_coreClasses[$classNam e]);else if(isset(self::$_classes[$classNam e]))elseinclude(self::$_classes[$classNam e]);include($classNam e.'.php');
スライド31: 仕方ないので@ で対応public static function autoload($classNam e){}// use include so that the error PHP file m ay appearif(isset(self::$_coreClasses[$classNam e]))include(YII_PATH.self::$_coreClasses[$classNam e]);else if(isset(self::$_classes[$classNam e]))elseinclude(self::$_classes[$classNam e]);@ include($classNam e.'.php');
スライド32: ……}}XO O PS側へのブリッジprotected function yiapp($config){$yi=XO O PS_TRUST_PATH.'/yi/fram ework/yi.php';ob_start();require_once($yi);$yi_app = Y i::createW ebApplication($config);$yi_app>setCom ponents(array('user' => array('class'=> 'Y iXoopsUser')));$yi_app>run();$out = ob_get_contents();ob_end_clean();return $out;}protected function post($out){$root = XCube_Root::getSingleton();if (!isset($_SERVER['argc'])) {
スライド33: XO O PS内でscaffoldが!
スライド34: XO O PS内でY iのデバッグ表示が!
スライド35: 結構便利
スライド36: (いやCakeでもできるんだけど)
スライド37: ryus.co.jpで公開中!(ダウンロードページにて)
スライド38: でもYiiとかわかんないんだけど…
スライド39: 日本Yiiユーザ会
スライド40: 日本Y iユーザ会
スライド41: ( ゚д゚ )
スライド42: nazoは日本Yiiユーザ会を応援しています
スライド43: んで
スライド44: Yiiって誰か使えるの?
スライド45: …
スライド46: 誰特
スライド47:
スライド48: 次回予告
スライド49: XO O PSでrhaco2を使う!
スライド50: あのhentaiフレームワークがついにXO O PSに!果たして!?
スライド51: 手を入れないと動かないのは確認済みだけど
スライド52: rhacoもよろしく!
スライド53: 終