for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/**
* Created by PhpStorm.
* User: Adrian Dumitru
* Date: 8/20/2017
* Time: 12:36 AM
*/
namespace Qpdb\QueryBuilder\Traits;
use Qpdb\QueryBuilder\Dependencies\QueryException;
use Qpdb\QueryBuilder\Dependencies\QueryHelper;
use Qpdb\QueryBuilder\Dependencies\QueryStructure;
use Qpdb\QueryBuilder\Statements\QuerySelect;
use Qpdb\QueryBuilder\Statements\QueryStatement;
trait TableValidation
{
* @param $table
* @return mixed|string
* @throws QueryException
private function validateTable( $table )
switch ( gettype( $table ) ) {
case QueryStructure::ELEMENT_TYPE_STRING:
$table = $this->validateTableName( $table );
break;
case QueryStructure::ELEMENT_TYPE_OBJECT:
$table = $this->validateTableSubQuery( $table );
default:
throw new QueryException( 'Invalid table type parameter: ' . gettype( $table ), QueryException::QUERY_ERROR_INVALID_TABLE_STATEMENT );
}
return $table;
private function validateTableName( $table )
$table = trim( $table );
if ( '' === $table )
throw new QueryException( 'Table name is empty string!', QueryException::QUERY_ERROR_INVALID_TABLE_STATEMENT );
return QueryHelper::addBacktick($table);
* @return mixed
private function validateTableSubQuery( $table )
if ( $this->statement !== QueryStatement::QUERY_STATEMENT_SELECT )
throw new QueryException( 'Invalid subQuery statement!', QueryException::QUERY_ERROR_INVALID_TABLE_STATEMENT );
if ( !is_a( $table, QuerySelect::class ) )