Database Transversal API

DatabaseIterator é unha clase que, coa axuda de ADOdb, pretende axilizar o traballo á hora de interactuar cunha base de datos. A idea é programar contra unha base de datos como se estivesemos a traballar con arrays. Aproveitando as características de PHP5 (as interfaces de ArrayIterator, ArrayAccess, os métodos máxicos, ...) é posible percorrer todas as táboas, filas e columnas dunha base de datos, coa seguinte sintase:

$dbIt = new DatabaseIterator($conn);
foreach($dbIt as $table) { // loop tables
    $columns = $table->getColumns(); // get columns
    foreach($table as $row) { // loop rows
        echo $row; // call to __toString() method

        // or loop columns
        foreach($columns as $col) {
            echo $row->{$col->name} . PHP_EOL;
        }
    }
}

DatabaseIterator is a class that use new features of PHP5 (SPL, Iterators, magic methods, ...) to simplify process of iteration with a database. Using a DatabaseIterator, you can work with your database the same mode that you work with arrays.

Download

Crear unha conexión con ADOdb (ADOConnection) e o obxecto DatabaseIterator e listar todas as táboas:

require('../libs/adodb5/adodb.inc.php');
$conn = ADONewConnection('mysql');
$conn->PConnect('localhost', 'root', 'pass', 'database');
$databaseIt = new DatabaseIterator($conn);

foreach($databaseIt as $table) {
    echo $table->name . PHP_EOL;
}

Establecer a SQL interna e listar as filas empregando o método each:

$databaseIt['contents']->select('pk_content, title')
    ->where('title REGEXP ""');
$foo = create_function('$item', 'echo $item->title . PHP_EOL;');
$databaseIt['contents']->each($foo);

Obter a sintase da sentencia "CREATE TABLE" para a táboa actual:

echo $databaseIt['contents']->getCreateTable();
echo $databaseIt->from('contents')->getCreateTable();

Inserindo novos datos:

for($i=0; $i<10; $i++) {
    $std = new stdClass();
    $std->pk_evento = ($i+1);
    $std->fk_content_categories = 0;
    $std->summary = 'Testing '.$i;
    $std->body = 'Proba '.$i;
    $std->img = 0;

    $databaseIt['events']->insert($std);
}
// outra for sintase
$row = $databaseIt['events']->newRow();
$row->insert($std);

Actualizar/Eliminar unha fila da táboa:

$databaseIt['events'][0]->summary = 'Hello';
$databaseIt['events'][0]->update();
$databaseIt['events'][1]->delete();

Tamén é posible combinar outras funcionalidades presentes en ADOdb, por exemplo as transaccións:

$conn->BeginTrans();
foreach($rows as $row) {
    $row->permalink = preg_replace('/[^a-zA-Z0-9_\-\/\.]/', '', $row->permalink);
    $row->update();
}
echo('Feito! (ou non?)');
$conn->RollbackTrans(); // desfacer todos os cambios
//ou $conn->CommitTrans(); se todo foi ben

Outros exemplos e documentación:

Última actualización 2013-04-20
4:10 PM (Europe/Madrid)
Data de creación 2009-05-25
6:13 PM (Europe/Madrid)
DatabaseIterator is a class that use new features of PHP5 (SPL, Iterators, magic methods, ...) to simplify process of iteration with a database. Using a DatabaseIterator, you can work with your database the same mode that you work with arrays.
php database framework

Relacionados