(   )
$this->User->findAll(
  array(
    ‘status’ => ‘active’,
    ‘confirmed_email’ => ‘yes’,
  )
)
$this->User->findAll(
  ” status = ‘active’ AND confirmed_email = ‘YES’ ”
)
Don’t
Repeat
Yourself
Class User extends AppModel {
  var $name = ‘User’;
  function getActiveUser() {
    return $this->User->findAll(array(
  ...
Class User extends AppModel {
  var $name = ‘User’;
  function getActiveUser($limit = null, $page = null) {
    return $th...
Class User extends AppModel {
  var $name = ‘User’;
  function getActiveUser($order = null, $limit = null,
$page = null) {...
…
…
Class User extends AppModel {
  var $name = ‘User’;
  var $cond_activeuser = array(
    ‘status’ => ‘active’,
    ‘confirm...
//
$this->User->findAll(
   am(
     $this->User->cond_activeuser,
     array(‘sex’ => ‘male’)
   )
);
//
$this->User->findAll(
   am(
     $this->User->cond_activeuser,
     array(‘sex’ => ‘male’)
   )
);
//
$this->User->findAll(
   am(
     $this->User->cond_activeuser,
     array(‘sex’ => ‘male’)
   )
);


‘   ’        ‘     ’
//

Array(
  [status] => active
  [confirmed_email] => yes
  [sex] => male
)
Class User extends AppModel {
  var $name = ‘User’;
  var $cond_activeuser = array(
    ‘or’ => array(
      array(
      ...
Array
(
  [or] => Array
   (
     [0] => Array
       (
         [status] => active
         [confirmed_email] => yes
    ...
array_merge_recursive($this->User->cond_activeuser,
  array(
    'or' => array(
      array('sex' => 'male'),
    )
  )
)
結果
Array
(
  [or] => Array
   (
     [0] => Array
       (
         [status] => active
         [confirmed_email] => yes
    ...
$cond = $this->User->cond_activeuser;
$cond[‘or’][0][‘sex’] = ‘male’;
$cond[‘or’][1][‘sex’] = ‘male’;
Class User extends AppModel {
  var $name = ‘User’;
  function getActiveCond($merger) {
    return am(array(
       ‘statu...
$this->User->getActiveCond(array(‘sex’ => ‘male’));

Array(
  [status] => active
  [confirmed_email] => yes
  [sex] => male
)
Class User extends AppModel {
  var $name = ‘User’;
  function getActiveCond($merger) {
    return array(
      ‘or’ => ar...
$this->User->getActiveCond(array(‘sex’ => ‘male’));

Array
(
  [or] => Array
   (
     [0] => Array
       (
         [sta...
← 銀座 洋菓子舗 ウエストに
Dry cake というケーキがあるらしい
http://www.ginza-west.co.jp/
…
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
Upcoming SlideShare
Loading in …5
×

CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏

7,994 views

Published on

http://www.akiyan.com/

Published in: Technology, Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,994
On SlideShare
0
From Embeds
0
Number of Embeds
844
Actions
Shares
0
Downloads
64
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏

  1. 1. ( )
  2. 2. $this->User->findAll( array( ‘status’ => ‘active’, ‘confirmed_email’ => ‘yes’, ) )
  3. 3. $this->User->findAll( ” status = ‘active’ AND confirmed_email = ‘YES’ ” )
  4. 4. Don’t Repeat Yourself
  5. 5. Class User extends AppModel { var $name = ‘User’; function getActiveUser() { return $this->User->findAll(array( ‘status’ => ‘active’, ‘confirmed_email’ => ‘yes’, )); } } $this->User->getActiveUser();
  6. 6. Class User extends AppModel { var $name = ‘User’; function getActiveUser($limit = null, $page = null) { return $this->User->findAll(array( ‘status’ => ‘active’, ‘confirmed_email’ => ‘yes’, ), null, null, $limit, $page); } }
  7. 7. Class User extends AppModel { var $name = ‘User’; function getActiveUser($order = null, $limit = null, $page = null) { return $this->User->findAll(array( ‘status’ => ‘active’, ‘confirmed_email’ => ‘yes’, ), null, $order, $limit, $page); } }
  8. 8.
  9. 9.
  10. 10. Class User extends AppModel { var $name = ‘User’; var $cond_activeuser = array( ‘status’ => ‘active’, ‘confirmed_email’ => ‘yes’, }; } $this->User->findAll($this->User->cond_activeuser);
  11. 11. // $this->User->findAll( am( $this->User->cond_activeuser, array(‘sex’ => ‘male’) ) );
  12. 12. // $this->User->findAll( am( $this->User->cond_activeuser, array(‘sex’ => ‘male’) ) );
  13. 13. // $this->User->findAll( am( $this->User->cond_activeuser, array(‘sex’ => ‘male’) ) ); ‘ ’ ‘ ’
  14. 14. // Array( [status] => active [confirmed_email] => yes [sex] => male )
  15. 15. Class User extends AppModel { var $name = ‘User’; var $cond_activeuser = array( ‘or’ => array( array( ‘status’ => ‘active’, ‘confirmed_email’ => ‘yes’, ), array( ‘status’ => ‘active’, ‘confirmed_phone’ => ‘yes’, ), ), ); }
  16. 16. Array ( [or] => Array ( [0] => Array ( [status] => active [confirmed_email] => yes ) [1] => Array ( [status] => active [confirmed_phone] => yes ) ) )
  17. 17. array_merge_recursive($this->User->cond_activeuser, array( 'or' => array( array('sex' => 'male'), ) ) )
  18. 18. 結果
  19. 19. Array ( [or] => Array ( [0] => Array ( [status] => active [confirmed_email] => yes ) [1] => Array ( [status] => active [confirmed_phone] => yes ) [2] => Array ( [sex] => male ) ) )
  20. 20. $cond = $this->User->cond_activeuser; $cond[‘or’][0][‘sex’] = ‘male’; $cond[‘or’][1][‘sex’] = ‘male’;
  21. 21. Class User extends AppModel { var $name = ‘User’; function getActiveCond($merger) { return am(array( ‘status’ => ‘active’, ‘confirmed_email’ => ‘yes’, ), $merger); } }
  22. 22. $this->User->getActiveCond(array(‘sex’ => ‘male’)); Array( [status] => active [confirmed_email] => yes [sex] => male )
  23. 23. Class User extends AppModel { var $name = ‘User’; function getActiveCond($merger) { return array( ‘or’ => array( am(array( ‘status’ => ‘active’, ‘confirmed_email’ => ‘yes’, ), $merger), am(array( ‘status’ => ‘active’, ‘confirmed_phone’ => ‘yes’, ), $merger), ), ); } }
  24. 24. $this->User->getActiveCond(array(‘sex’ => ‘male’)); Array ( [or] => Array ( [0] => Array ( [status] => active [confirmed_email] => yes [sex] => male ) [1] => Array ( [status] => active [confirmed_phone] => yes [sex] => male ) ) )
  25. 25. ← 銀座 洋菓子舗 ウエストに Dry cake というケーキがあるらしい http://www.ginza-west.co.jp/
  26. 26.

×