Query Builder бібліотека для роботи з SphinxQL

Одна з найбільш важливих завдань, що стоять при розробці сайту, це реалізація повнотекстового пошуку. Один з популярних і простих варіантів реалізації, це використання Sphinx. На хабре вже є присвячені йому статті, але не заслужено не згадана бібліотека Query Builder. Це я і спробую виправити.

image

Введення
Одна з найбільш важливих завдань, що стоять при розробці сайту, це реалізація повнотекстового пошуку. Один з популярних і простих варіантів реалізації, це використання Sphinx. На хабре вже є присвячені йому статті, але не заслужено не згадана бібліотека Query Builder. Це я і спробую виправити.

Даний текст є вільним перекладом статті «SphinxQL Query Builder for PHP».

Чому його варто використовувати?
  • Мінімізуємо ризики від можливих sql ін'єкції проти ваших індексів;
  • Робить ваші запити більш читабельними і легше підтримуваними;
  • Дозволяє створювати більш прості і гнучкі запити;
  • Він має всі функції реалізовані в бібліотеці Sphinx API і більшість функцій, використовуваних при роботі з SphinxQL;
  • Він був протестований в декількох версіях SphinxSearch і php.


Як встановити?
Якщо ви використовуєте Composer, то ви можете встановити наступною командою:
$ composer install foolz/sphinxql-query builder---save

Або клонувати його з гитхаб репозиторію.

Порівняння підходів
Приклад без використання Query Builder:
<?php
$conn = new mysqli('localhost', null, null, null, 9306);
if ($conn->connect_error) {
throw new Exception('Connection Error: ['.$conn->connect_errno.'] '.$conn->connect_error, $conn->connect_errno);
}

$resource = $conn->query('SELECT * FROM anime_index WHERE MATCH(\'@character Asuka\') AND age BETWEEN 12 AND 19');
$results = array();
while ($row = $resource->fetch_assoc()) {
$results[] = $row;
}
$resource->free_result();

// Тепер, можна вивести масив з отриманими результатами
var_dump($results);


А ось і шматок коду з використанням Query Builder:
<?php
use Foolz\SphinxQL\Connection;
use Foolz\SphinxQL\SphinxQL;

$conn = new Connection();
$conn->setParams(array('host' => 'localhost', 'port' => 9306));

$query = SphinxQL::create($conn)
->select('*')
->from('anime_index')
->match('character', 'Asuka');

// На відміну від попереднього прикладу, ви з легкістю зможете змінити запит
$query->where'age', 'between', array(12, 19));

// Масив з отриманими результатами
$result = $query- > execute();

Чи Не правда набагато наочніше і простіше?

Трохи підсумуємо
Хоч ми і можемо писати запити використовуючи MySQLi, але Query Builder дозволяє писати більш зрозумілі і легко підтримувані запити. Я думаю приклад зазначений вище дуже наочно це показує. Більше прикладів та документація по використанню бібліотеки, ви можете знайти на гітхабі.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.