Flupdo  v1.2
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
FlupdoBuilder Class Reference

Query builder base class, which provides some magic to build queries. More...

Inheritance diagram for FlupdoBuilder:
Inheritance graph

Public Member Functions

 __construct ($pdo, $log_query=false, $log_explain=false, $no_parenthesis_in_conditions=false)
 Constructor.
 
 __call ($method, $args)
 Call buffer-specific method to process arguments. More...
 
 quoteIdent ($ident)
 Quote identifier, preserve dot.
 
 compile ()
 Call compile function in a safe way.
 
 uncompile ()
 "Uncompile" the query. More...
 
 debugDump ()
 Fluently dump query to error log.
 
 getSqlQuery ()
 Get compiled SQL query, use only for debugging.
 
 getSqlParams ()
 Get parameters for compiled SQL query, use only for debugging.
 
 quote ($value)
 Quotes a string for use in a query. More...
 
 rawSql ($sql)
 Returns object marking raw SQL statement.
 
 exec ()
 Builds and executes an SQL statement, returning the number of affected rows. More...
 
 query ()
 Builds, binds and executes an SQL statement, returning a result set as a PDOStatement object. More...
 
 prepare ($driver_options=array())
 Builds and prepares a statement for execution, returns a statement object. More...
 
 lastInsertId ()
 Proxy to PDO::lastInsertId().
 
 fetchSingleRow ()
 Fetch one row from result and close cursor. More...
 
 fetchSingleValue ()
 Fetch one row from result and close cursor. More...
 
 fetchAll ($key_column=null)
 Fetch everything into array. More...
 
 __toString ()
 Get SQL query as a string.
 

Static Public Member Functions

static generateDoxygenDocumentation ()
 Generate documentation for methods defined in $methods array.
 

Public Attributes

 $pdo
 PDO driver used to execute query and escape strings.
 

Protected Member Functions

 add ($args, $buffer_id)
 Add SQL fragment to buffer.
 
 replace ($args, $buffer_id)
 Replace buffer content with SQL fragment.
 
 setFlag ($args, $buffer_id, $label)
 Set flag. More...
 
 addJoin ($args, $buffer_id, $label)
 Add join statement to buffer.
 
 compileQuery ()
 Process all buffers and build SQL query. More...
 
 explain ()
 Explain the query and dump result to log.
 
 sqlStart ()
 Start SQL generating. More...
 
 sqlFinish ()
 Finish SQL generating. More...
 
 sqlBuffer ($buf)
 Add SQL with parameters. More...
 
 sqlRawBuffer ($buf)
 Generate raw SQL fragment.
 
 sqlComment ($buffer_id)
 Generate SQL comment.
 
 sqlFlag ($buffer_id)
 Generate flag fragment.
 
 sqlStatementFlags ($buffer_id, $flag_buffer_ids, $decorations)
 Generate SQL fragment made of flags.
 
 sqlList ($buffer_id, $decorations)
 Generate SQL fragment made of list.
 
 sqlValuesList ($buffer_id)
 Generate SQL fragment made of list values. More...
 
 sqlJoins ($buffer_id)
 Generate SQL fragment made of joins.
 
 sqlConditions ($buffer_id)
 Generate SQL fragment made of conditions in AND statement.
 

Protected Attributes

 $log_query
 Log all queries as they are executed.
 
 $log_explain
 Explain each query to log.
 
 $no_parenthesis_in_conditions
 Sphinx does not like parenthesis in WHERE.
 
 $can_explain = false
 Is it possible to explain this query?
 
 $indent = "\t"
 Indentation string.
 
 $sub_indent = "\t::t"
 Second level indentation string.
 
 $query_sql = null
 Built query.
 
 $query_params = null
 Parameters for prepared statement (to be bound before query is executed).
 
 $buffers = array()
 Buffers containing SQL fragments.
 

Static Protected Attributes

static $clauses = array()
 List of clauses used to composed result query. More...
 
static $methods = array()
 List of methods used to fill the $buffers. More...
 

Flags for helper methods.

Used by sqlList() and sqlStatementFlags().

const INDENT = 0x01
 List items should be indented.
 
const LABEL = 0x02
 SQL fragment has a label.
 
const BRACKETS = 0x04
 There are brackets around each item in the list.
 
const NO_SEPARATOR = 0x08
 No separator between list items.
 
const SUB_INDENT = 0x20
 Indent more the first line.
 
const COMMA = 0x40
 Add comma after the SQL fragment.
 
const EOL = 0x80
 Add EOL after the SQL fragment.
 
const ALL_DECORATIONS = 0xFF
 Make it fancy!
 

Detailed Description

Query builder base class, which provides some magic to build queries.

Member Function Documentation

__call (   $method,
  $args 
)

Call buffer-specific method to process arguments.

If the first argument is null, corresponding buffer will be deleted.

setFlag (   $args,
  $buffer_id,
  $label 
)
protected

Set flag.

Replace buffer with new label of this flag.

compileQuery ( )
abstractprotected

Process all buffers and build SQL query.

Side product is array of parameters (stored in $this->args) to bind with query.

This function is called by FlupdoBuilder, do not call it directly.

Example:

$this->sqlStart();
// ...
return $this->sqlFinish();

Here is the caller graph for this function:

uncompile ( )

"Uncompile" the query.

This will drop compiled query and allow additional modifications. Once query is compiled additional modifications are not allowed to detect programming errors, but sometimes it is useful to execute the query and then perform additional modifications before second execution.

Here is the caller graph for this function:

quote (   $value)

Quotes a string for use in a query.

Proxy to PDO::quote().

exec ( )

Builds and executes an SQL statement, returning the number of affected rows.

Proxy to PDO::exec().

Here is the call graph for this function:

query ( )

Builds, binds and executes an SQL statement, returning a result set as a PDOStatement object.

Proxy to PDOStatement::prepare() & PDOStatement::bindValue() & PDOStatement::query(). But if there is nothing to bind, PDO::query() is called instead.

Here is the call graph for this function:

Here is the caller graph for this function:

prepare (   $driver_options = array())

Builds and prepares a statement for execution, returns a statement object.

Proxy to PDO::prepare().

Here is the call graph for this function:

Here is the caller graph for this function:

fetchSingleRow ( )

Fetch one row from result and close cursor.

Returns what PDOStatement::fetch() would return.

Here is the call graph for this function:

fetchSingleValue ( )

Fetch one row from result and close cursor.

Returns what PDOStatement::fetchColumn(0) would return.

Here is the call graph for this function:

fetchAll (   $key_column = null)

Fetch everything into array.

Returns what PDOStatement::fetchAll(PDO::FETCH_ASSOC) would return.

If $key_column is set, the specified column will be used to index array items.

Note
Keep in mind that this is not effective for larger data sets. It is better to perform the query and iterate over result instead of loading it all at once. However, it may not be possible in all cases.

Here is the call graph for this function:

sqlStart ( )
protected

Start SQL generating.

Uses output buffering to concatenate the query.

Here is the caller graph for this function:

sqlFinish ( )
protected

Finish SQL generating.

Picks up the query from output buffer.

Here is the caller graph for this function:

sqlBuffer (   $buf)
protected

Add SQL with parameters.

Parameters are stored in groups, merge to one array is done at the end (using single array_merge call).

Here is the caller graph for this function:

sqlValuesList (   $buffer_id)
protected

Generate SQL fragment made of list values.

Todo:
bind values

Here is the caller graph for this function:

Member Data Documentation

$clauses = array()
staticprotected

List of clauses used to composed result query.

Shared constant data.

$methods = array()
staticprotected

List of methods used to fill the $buffers.

Shared constant data.