AIT est un ensemble de classes PHP permettant le stockage et la recherche de métadonnées. AIT se base sur 2 concepts : des items et des tags. A partir de là, on peut stocker et effectuer des recherches toutes informations formalisées sur ces 2 concepts.
Concrètement AIT peut être considéré simplement comme un moteur de Tag (Tag's engine) en PHP, ou alors si on pousse le raisonnement à l'extrême, comme un moteur générique de stockage d'information.
Voici un exemple de code AIT pour stocker et rechercher des disques :
require_once 'AIT.php';
require_once 'AIT/Extended/Searching.php';
// Connexion à la base
$db = AIT::connect(
'mysql:host=localhost;dbname=test',
'root'
);
// Contrôle et création de la structure de données
$db->checkup();
// Ajout d'un plugin
$db->extendWith(new AIT_Extended_Searching());
// Définition d'un schéma de données
$sm = $db->registerSchema('Disques', array('titre', 'artiste', 'style'));
// Ajout de quelques Tags génériques
$jazz = $sm->style->addTag('Jazz');
$blues = $sm->style->addTag('Blues');
$electro = $sm->style->addTag('Electro');
$classique = $sm->style->addTag('Musique Classique');
// Ajout de quelques items
$d1 = $sm->disques->addItem('a2407474');
$d1->addTag('Bossa nova stories', $sm->titre);
$d1->addTag('Eliane Elias', $sm->artiste);
$d1->attach($jazz)->attach($blues);
$d2 = $sm->disques->addItem('a2274830');
$d2->addTag('Fuck me I\'m famous Ibiza mix 08', $sm->titre);
$d2->addTag('David Guetta', $sm->artiste);
$d2->attach($electro);
$d3 = $sm->disques->addItem('a1902425');
$d3->addTag('Heroes', $sm->titre);
$d3->addTag('Antonio Vivaldi', $sm->artiste);
$d3->addTag('Philippe Jaroussky', $sm->artiste);
$d3->attach($classique);
// Recherche Full Text
$result = $sm->disques->searchItems('*es');
foreach($result as $item) $item->dump();
// Recherche par tags
$result = $sm->disques->fetchItems(new ArrayObject(array($electro)));
foreach($result as $item) $item->dump();
// Etc ...