2008/11/06

第2回設計勉強会に参加してきた

ポスト @ 23:31:32 | ,     このエントリーを含むはてなブックマーク

第2回設計勉強会に参加してきました。
まず、こういった機会を提供してくれた id:shimookaさん、ありがとうございます。株式会社ディノさんも会場の提供ありがとうございます。LINDさんも毎度ありがとうです。

とりあえず、資料を置いておきます。

Event Php Study Design 2
View SlideShare presentation or Upload your own. (tags: php design)

ちなみに、Teedaのレイヤーは Teeda Extension featuring Goya 〜アーキテクチャ【レイヤー構成】〜 - たかのり日記 さんのを、チョーそのまま使ってます
Hermit は http://svn.coderepos.org/share/lang/php/misc/Hermit/

今回の発表は、すいません。あまりまとめきれていなくて、早足で話しすぎました。ust の方もすいません、ust 忘れてました。今後はustにもわかりやすいように資料を作ったほうがいいっすね。

後、今回は僕が日頃思っていた疑問をそのまま発表してしまって、なんともまぁgdgdですが、色々と意見交換ができてすごーくためになりました。
今回、設計勉強会で発表するために、「設計だし、コードは見えないプレゼンにしよう。実装はいいっしょ」と思ってたんですが、見えたほうが理解早いっすね。反省。

kunitさんのsymfonyの「罪悪感 & 諦め」は僕もそれです。でも諦めないっすよw
shimooka さんの発表はすげー親近感たっぷりで、別の意味で楽しめましたwあと、色々とノウハウを発表していただいたので、ためになります。
他にも、沢山の方と話すことができました。為になります。「納期があるんだし、FWからの離脱はしゃーない。諦めろ」とか「Propelはしゃーない。諦めろ」とみんな諦めすぎっす

ちなみに、Hermit ですが、僕のプロジェクトでしか使っていない。悲しいやつです。
ref - http://svn.coderepos.org/share/lang/php/misc/Hermit/
いつかちゃんとした形にまとめますが、S2Dao.PHP5 をもっと PHP でも使えるようにはモットーです。
叩いてくれる方、開発してくれる方、よろしくです。(僕もどんどん書いていきますが)

あ、最後に。Daoのコネクションどーする?ってやつは、Hermit & Symfony で Master/Slave の構成だとこんな感じに書きます。(shimookaさんのPropel::getConnection() は symfony の DatabaseManager.getConnection(name)ですね)

class DataSourceSelector {
  
  const MASTER_DBMS_NS = 'master';
  const SLAVE_DBMS_NS = 'slave';
  
  protected static $specSource = array(
    'HogeDao' => self::MASTER_DBMS_NS,
    'FooDao' => self::SLAVE_DBMS_NS,
    'BarDao::callProcA' => self::MASTER_DBMS_NS
  );
  
  protected $dbManager;
  public static function bindHermitDataSource(sfDatabaseManager $manager){
    $instance = new self;
    $instance->dbManager = $manager;
    HermitDataSourceManager::setCallback(array(
      $instance, 'getConnectionCallback'
    ));
  }
  public function getConnectionCallback($targetClass, $methodName, $type){
    $database = $this->fetchDatabase($targetClass, $methodName, $type);    
    return $database->getConnection();
  }
  
  protected function fetchDatabase($targetClass, $methodName, $type){
    if(isset(self::$specSource[$targetClass])){
      return $this->dbManager->getDatabase(self::$specSource[$targetClass]);
    }
    return $this->getDefaultDatabase($type);
  }
  
  protected function getDefaultDatabase($type){
    if(HermitEvent::isInit($type)){
      return $this->getSlave();
    }
    if(HermitEvent::isRead($type)){
      return $this->getSlave();
    }
    if(HermitEvent::isWrite($type)){
      return $this->getMaster();
    }
    if(HermitEvent::isProcedure($type)){
      return $this->getMaster();
    }
    return $this->getMaster();
  }
  
  protected function getMaster(){
    return $this->dbManager->getDatabase(self::MASTER_DBMS_NS);
  }
  
  protected function getSlave(){
    return $this->dbManager->getDatabase(self::SLAVE_DBMS_NS);
  }
}

1 Trackback

[PHP][勉強会]第2回設計勉強会をやりました

無事、第2回設計勉強会が終了しました。会場を提供して頂いた株式会社ディノさん、id:kunitさん、ありがとうございました。また、勉強会に参加された方、お疲れ様でした。個人的には結構盛り上がったと思ってます。ホントにありがとうございました:-) また、id:NEKOGETさん

From : Do You PHP はてな @ 2008-11-07 11:54:21

Track from Your Website

http://blog.xole.net/trackback/tb.php?id=715

Comment

No Comments

Post Your Comment


*は入力必須です。E-Mailは公開されません。

1 + 2 =