Такой рефакторинг применяется, когда методу нужна дополнительная информация от вызывающего его клиента.

php
  1.  
  2. <?php
  3. // ..... было
  4. public function getProducts()
  5. {
  6. // забираем продукты из базы
  7. return $this->orm->select('products');
  8. }
  9.  

Мы живем в изменяющемся мире! Предположим, что бизнес стал развиваться и товаров стало большe, тогда нам приедтся их категоризировать. После этого возникнет естественное желание иметь возможность просматривать товары только одной категории, однако старый функционал неплохо бы сохранить.

php
  1.  
  2. public function getProducts($category_id=null)
  3. {
  4. $cid = intval($category_id);
  5. if($cid)
  6. {
  7. $this->orm->setCriteriaEqual('category_id',$cid);
  8. }
  9. // забираем продукты из базы
  10. return $this->orm->select('products');
  11. }
  12.  

Обратите внимание, что в данном случае рефакторинг выполнен безопасно, т.е. старый функционал не пострадал — если клиент вызовет метод без параметров, ему вернутся все продукты.

Комменты

Добавить коммент