タグ

ブックマーク / wp.serpere.info (3)

  • 任意の場所からログイン中のユーザを取得する | へびにっき

    This is a problem that comes up often. Generally you need access to the session to retrieve information about the logged in user. In the view this is done with the session helper. これはよく問題になります。一般に、ログイン中のユーザについての情報を取り出すには、セッションにアクセスする必要があります。ビューの中では session ヘルパーを使うことでアクセスできます。 $session->read('Auth.User.id'); In the controller you can use the SessionComponent. コントローラの中では Session コンポーネントを使うことができま

    ryuzee
    ryuzee 2010/10/18
    任意の場所(モデルとか)でログイン中のユーザー情報を取得する方法。見ればなるほど、シングルトン使っているだけなんだけど、これはイイ。ただレイヤー間の結合度は気になる。。
  • CakePHPでトランザクション制御 | へびにっき

    環境: CakePHP 1.3 CakePHPのModelクラスには直接トランザクションを制御するメソッドがない。そこで例えば次のようにAppModelにメソッドを定義する。 class AppModel extends Model { function begin() { return $this->getDataSource()->begin($this); } function commit() { return $this->getDataSource()->commit($this); } function rollback() { return $this->getDataSource()->rollback($this); } } しかしこの方法ではテストがやりにくい。明示的にトランザクションを制御したい時というのは、複数のテーブルにまたがる複雑なロジックを組むことが多いので

    ryuzee
    ryuzee 2010/08/31
    トランザクション制御と、その場合のモックオブジェクトを使ったテストについて
  • recursiveで悩むな、Containableを使え | へびにっき

    CakePHPのModelが備える recursive 機能は分かりにくい上に効率が悪い。代わりにContainableビヘイビアを使うべき。今後新たに作り始めるならAppModelに次のように書いても良いくらい。 class AppModel extends Model { var $recursive = -1; var $actsAs = array('Containable'); } このビヘイビアは、一言で言えば ActiveRecord(Rails) の include オプションのようなもの。一度の find で取得する関連を明示的かつ再帰的に指定することができる。 /* Group hasMany User User hasOne Profile */ $rows = $this->Group->find('all', array('contain' => array('U

  • 1