Есть класс Product, метод всего один getById. Возвращает массив товаров, либо пустой массив (в случае не найденных данных).
class Product
{
public function getById(array $a){
//"SELECT * FROM `products` where `id` IN (".implode(', ', $a).")";
//...
return $data;
}
}
Есть второй класс ProductSearch, с методами: поиск по имени, бренду и тд. Выводит также массив ID-шников этих товаров.
class ProductSearch
{
public function getByName($str){
//"SELECT `id` FROM `products` where `name` LIKE ....";
//...
return $data;
}
public function getByVendor($str){
//"SELECT `id` FROM `products` where `vendor` = $str";
//...
return $data;
}
}
Этот массив номеров я передаю в главный класс Product и получаю уже нужный массив данных товаров.
$product = new Product();
$productSearch = new ProductSearch();
$result = $productSearch->getByVendor('Sony');
$products = $product->getById($result );
Ребята говорят, не делай мозг, сделай коллекцию, тоже самое по сути и гораздо удобней.
Но сколько бы я не читал, никак не пойму, как она мне может помочь.