Odkazy: dibi | API reference

Forum: [česky] [english]

dibi fórum

tiny ‘n’ smart
database layer

Nejste přihlášen(a)

#1 před 3 lety

David Grudl
Administrator
Registrovaný: 8. 2. 2005
Příspěvky: 5833

Vylepšení substitucí

Od revize 205 jsem vylepšil podporu pro substituce. Jednak výchozí fallback handler vyhazuje výjimku, takže chybně použitá substituce se ihned odhalí. Dále je možné substituce používat i mimo hranaté závorky:

dibi::addSubst('blog', 'wp_');
// funguje obojí
dibi::test("UPDATE [:blog:]items SET [text]='Hello World'");
dibi::test("UPDATE :blog:items SET [text]='Hello World'");

Při použití mimo hranaté závorky je význam rozšířen i mimo identifikátory. Lze tak vkládat i řetězce, čísla, booleany.

class Order
{
        const SHIPPED = 's';
        const COMPLETE = 'c';
}

function substFallBack($expr)
{
        $const = str_replace('.', '::', $expr);
        if (defined($const)) {
                return constant($const);
        } else {
                return dibi::defaultSubstFallback($expr);
        }
}

dibi::setSubstFallBack('substFallBack');

dibi::test("SELECT * FROM [orders] WHERE [status]=:Order.SHIPPED: AND [active]=:TRUE:");
// MySQL --> SELECT * FROM `orders` WHERE `status`='s' AND `active`=1
// PostgreSQL --> SELECT * FROM "orders" WHERE "status"='s' AND "active"=TRUE

 

Zápatí