Пример #1
0
<?php

class Builder
{
    public function build($query)
    {
        static $regExp = '/([^{"\']+|\'(?:\\\\\'.|[^\'])*\'|"(?:\\\\"|[^"])*"|{[^}{]+})/';
        return preg_replace_callback($regExp, array(&$this, "replaceCallback"), $query);
    }
}
class QueryBuilder extends Builder
{
    public function getQueryObject($query)
    {
        $self = $this;
        return function () use($self, $query) {
            $argv = func_get_args();
            foreach ($argv as $i => $arg) {
                $argv[$i] = mysql_real_escape_string($arg);
                array_unshift($argv, $self->build($query));
                return call_user_func_array('sprintf', $argv);
            }
        };
    }
}
$builder = new QueryBuilder();
$deleteItem = $builder->getQueryObject("DELETE FROM {ITEM_TABLE} WHERE id =%d");
$deleteItem($_GET['id']);