PHP Classes

File: Xyndravandria/Dyverath/Query/Component/Statement/Statement.php

Recommend this page to a friend!
  Classes of Mauro Di Girolamo   Xyndravandria Dyverath   Xyndravandria/Dyverath/Query/Component/Statement/Statement.php   Download  
File: Xyndravandria/Dyverath/Query/Component/Statement/Statement.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Xyndravandria Dyverath
Compose and execute MySQL database queries
Author: By
Last change:
Date: 10 years ago
Size: 6,094 bytes
 

Contents

Class file image Download
<?php
/*
=============================================================================================================================================
| This file is part of a project released under the terms of the Xyndravandria PHP License (XyndravandriaPHPLicense.txt). |
| |
| You should be given a copy of the Xyndravandria PHP License (XyndravandriaPHPLicense.txt) within the same directory as the README.md; |
| if not, you can get a copy at http://Xyndravandria.ohost.de/XyndravandriaPHPLicense.txt . |
| |
| The copyright (c) of this project is owned by Mauro Di Girolamo <maurodigirolamo@.web.de>. |
============================================================================================================================================|



Xyndravandria Dyverath
----------------------
Alpha 0.0.0

Xyndravandria is the name of a collection of projects designed and developed by Mauro Di Girolamo (maurodigirolamo@web.de); he is therefore the copyright (c) owner of Xyndravandria itself and all of its projects.

Xyndravandria Dyverath is released under the terms of the Xyndravandria PHP License (XyndravandriaPHPLicense.txt). You should be given a copy of the Xyndravandria PHP License (XyndravandriaPHPLicense.txt) within the same directory as the README.md; if not, you can get a copy at http://Xyndravandria.ohost.de/XyndravandriaPHPLicense.txt . There might be a release under a freer license for a later, more stable version.

The documentation is either included in ./admin_media/Documentation/ or can be read at http://Xyndravandria.ohost.de/Dyverath/Documentation/.

All projects:

   Xyndravandria Averazain
   http://github.com/MauroDiGirolamo/Xyndravandria_Averazain
   PHP
   Averazain is an Ajax framework supporting also JavaScript disabled clients perfectly - including search engines like Google.
  
   Xyndravandria Dyverath
   http://github.com/MauroDiGirolamo/Xyndravandria_Dyverath
   PHP
   Dyverath is a database access wrapper.
  
   Xyndravandria Erozaver
   http://github.com/MauroDiGirolamo/Xyndravandria_Erozaver
   PHP
   Erozaver is a class extending the type hinting given by the PHP engine (additional support for basic type hinting and size constraints).
  
   Xyndravandria Mondraviel
   http://github.com/MauroDiGirolamo/Xyndravandria_Mondraviel
   PHP
   Mondraviel is a class used to separate HTML from PHP code by firstly register models - files containing place holders embedded in HTML code - and then later fill them dynamically with content by passing values for the place holders.
*/

namespace Xyndravandria\Dyverath\Query\Component\Statement;

use
Xyndravandria\Dyverath\Table;
use
Xyndravandria\Dyverath\Query\Component\Component;
use
Xyndravandria\Dyverath\Query\Component\Type\Column;
use
Xyndravandria\Dyverath\Query\Component\Type\Operator;
use
Xyndravandria\Dyverath\Query\Component\Type\Value;
use
Xyndravandria\Erozaver\XyndravandriaDyverathException;

/// @brief A class representing a general statement within a
/// Query.
/// @details A class representing a general statement within a
/// Query. @n
/// It consists of a left part (StatementType), an operator (@ref Xyndravandria::Dyverath::Query::Component::Type::Operator "Operator") and a right part (StatementType). @n
/// Examples:
/// @verbatim new Statement( new Column( 'id' ), new Operator( '>' ), new Value( 10 ) )
///new Statement( new Column( 'Name' ), new Operator( '=' ), new Value( 'Peter' ) ) @endverbatim
/// @abstract
class Statement extends Component {
  
  
/// The left part.
   /// <dl class = "type"><dt><b>%Type:</b></dt>
   /// <dd>StatementType</dd></dl>
   /// @private
  
private $Left;
  
  
/// Returns Statement::$Left.
   /// @public
   /// @returns StatementType
  
public function Left( ) {
      return
$this->Left;
   }
  
  
/// The Operator.
   /// <dl class = "type"><dt><b>%Type:</b></dt>
   /// <dd>Operator</dd></dl>
   /// @private
  
private $Operator;

  
/// The right part.
   /// <dl class = "type"><dt><b>%Type:</b></dt>
   /// <dd>StatementType</dd></dl>
   /// @private
  
private $Right;

  
/// Returns Statement::$Right.
   /// @public
   /// @returns StatementType
  
public function Right( ) {
      return
$this->Right;
   }

  
/// Creates a new Statement.
   /// @public
   /// @param StatementType $Left: The left part.
   /// @param Operator $Operator: The Operator.
   /// @param StatementType $Right: The right part.
  
public function __construct( StatementType $Left, Operator $Operator, StatementType $Right ) {
     
// TODO Make this easier. It should be possible to pass strings in $Left, $Operator, $Right.
      // TODO: Check whether $Left or $Right has alias?
      //if( $Left instanceof Column && $Left->HasAnchor( ) )
      // throw new XyndravandriaDyverathException( 'No column in $Left can have an alias!' );
      //else
        
$this->Left = $Left;

     
$this->Operator = $Operator;
     
     
//if( $Right instanceof Column && $Right->HasAnchor( ) )
      // throw new XyndravandriaDyverathException( 'No column in $Right can have an alias!' );
      //else
        
$this->Right = $Right;
      return;
   }
  
  
  
/// Optimises a Statement.
   /// @public
   /// @param Table $Table: The Table used to optimise.
  
public function Optimise( Table $Table ) {
     
$this->Left instanceof Column && $this->Left->Optimise( $Table );
     
$this->Right instanceof Column && $this->Right->Optimise( $Table );
      return;
   }

  
/// Returns the Statement as a string.
   /// @public
   /// @returns string
   /// @note Required by the Component class.
  
public function __ToString( ) {
      return
$this->Left . ' ' . $this->Operator . ' ' . $this->Right;
   }
  
}
?>