phpメソッドマルチパラメータ再構成

2737 ワード

                ,           ,          :

01 function saveArticle($title, $content, $categoryId)
02 {
03     // ...
04 }

          ,       ,         。                 :

01 class Article
02 {
03     var $title;
04     var $content;
05     var $categoryId;
06
07     function save()
08     {
09         // ...
10     }
11 }

   ,                     ,              。            ,                       ,                           ,                ,           。    ,      Article        find   ,         limit, offset, order   :

01 class Article
02 {
03     var $title;
04     var $content;
05     var $categoryId;
06
07     var $limit = 10;
08     var $offset = 0;
09     var $order = 'created DESC';
10
11     function save()
12     {
13         // ...
14     }
15
16     function find($categoryId)
17     {
18         // ...
19     }
20 }

    ,     limit,offset,order           ,              ,    title,content,categoryId            , limit,offset,order   ,            ,               ,  ,                      (     find       static     ,             ,    ):

01 class Article
02 {
03     var $title;
04     var $content;
05     var $categoryId;
06
07     function save()
08     {
09         // ...
10     }
11
12     function find($categoryId, $limit = 10, $offset = 0, $order = 'created DESC')
13     {
14         // ...
15     }
16 }

                   ,find        ,     ,      :

01 class Article
02 {
03     var $title;
04     var $content;
05     var $categoryId;
06
07     function save()
08     {
09         // ...
10     }
11
12     function find($categoryId, $options = array())
13     {
14         $default = array(
15             'limit' => 10,
16             'offset' => 0,
17             'order' => 'created DESC'
18         );
19
20         $options = array_merge($default, (array)$options);
21
22         // ...
23     }
24 }

      ,              :

$article->find(123, array('limit' => 20));

    ,                         ,        ,                 ,          。          CakePHP         ,    ,                         。

  :  array_merge  ,  $options += $default;       ,  ,  options        ,          ,                  。