Nejste přihlášen(a)
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