Login   Register  
PHP Classes
elePHPant
Icontem

File: Xyndravandria/Dyverath/Server.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Mauro Di Girolamo  >  Xyndravandria Dyverath  >  Xyndravandria/Dyverath/Server.php  >  Download  
File: Xyndravandria/Dyverath/Server.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: 1 year ago
Size: 6,909 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;

use 
Xyndravandria\Dyverath\Query\Query;

/// A class representing a Server.
class Server extends ExtendedRepresentingClass {

   
/// This @ref Server "Server's" MySQL link identifier.
   /// <dl class = "type"><dt><b>%Type:</b></dt>
   /// <dd>resource</dd></dl>
   /// @private 
   
private $Connection null;
   
   
/// Returns Server::$Connection.
   /// @public 
   /// @returns resource
   
public function Connection( ) {
      return 
$this->Connection;
   }

   
/// Creates a new Server.
   /// @public 
   /// @param string $Name: The name of the Server.
   /// @param resource $Connection: The @ref Server "Server's"
   /// MySQL link identifier.
   
public function __construct$Name$Connection ) {
      
//\settype( $Name, 'string' );
      
if( ! \is_resource$Connection ) )
         throw new 
XyndravandriaDyverathException'$Connection is no resource.' );
      else {
         
parent::__construct$Name );
         
$this->Connection $Connection;
      }
      return;
   }
   
   
/// Accessess one of this @ref Server "Server's" @ref
   /// Database "Databases".
   /// @public
   /// @param string $Name: The name of the Database.
   /// @returns Database
   
public function Database$Name ) {
      
//\settype( $Name, 'string' );
      
$Database = new Database$Name$this );
      if( ( 
$DatabaseSaved Database::Cache( )->Get$Database->UniqueIdentifier( ) ) ) )
         return 
$DatabaseSaved;
      elseif( \
mysql_num_rows$this->ExecuteQuery( new Query'SELECT TRUE FROM `INFORMATION_SCHEMA`.`SCHEMATA` WHERE `SCHEMATA`.`SCHEMA_NAME` = \'' . \mysql_real_escape_string$Database->Name( ) ) . '\' LIMIT 1' ) ) ) == )
         throw new 
XyndravandriaDyverathException'Requested unknown database \'' $Database->Name( ) . '\'.' );
      else if( 
Database::Configuration( ) & Database::CacheEnabled )
         return 
Database::Cache( )->Add$Database );
      else
         return 
$Database;
      return 
null;
   }

   
/// Alias of Server::Database( ).
   
public function __get$Name ) {
      return 
$this->Database$Name );
   }

   
/// Returns all this @ref Server "Server's" @ref
   /// Database "Databases".
   /// @public
   /// @returns array of Database
   
public function Databases( ) {
      
$Databases = array( );
      if( ! ( 
$Result $this->Query'SELECT `SCHEMATA`.`SCHEMA_NAME` FROM `INFORMATION_SCHEMA`.`SCHEMATA` WHERE 1' ) ) )
         throw new 
XyndravandriaDyverathException'Unable to read out the databases of the server \'' $this->Name '\' from the information schema.' );
      else
         while( 
$Dataset = \mysql_fetch_object$Result ) ) {
            
$Database = new Database$Dataset->SCHEMA_NAME$this );
            if( ( 
$DatabaseSaved Database::Cache( )->Get$Database->UniqueIdentifier( ) ) ) )
               
$Databases[ ] = $DatabaseSaved;
            elseif( 
Database::Configuration( ) & Database::CacheEnabled )
               
$Databases[ ] = Database::Cache( )->Add$Database );
            else
               
$Databases[ ] = $Database;
         }
      return 
$Databases;
   }

   
/// Executes a Query on this Server.
   /// @public
   /// @param Query $Query: The Query to be executed.
   
public function ExecuteQueryQuery $Query ) {
      if( ! ( 
$Result = \mysql_query$Query$this->Connection ) ) )
         throw new 
XyndravandriaDyverathException'Error in query. Query: \'' $Query '\'. Error message: ' . \mysql_error( ) );
      else
         return 
$Result;
      return;
   }
   
   
/// Alias of Server::Cache( )->CurrentObject( ).
   /// @public
   /// @static
   /// @returns Server
   
public static function Current( ) {
      return 
self::Cache( )->CurrentObject( );
   }

   
/// Returns the declared name of this class.
   /// @public      
   /// @static      
   /// @returns string
   /// @note Required by the CacheAble interface.
   
public static function ClassName( ) {
      return 
__CLASS__;
   }
   
}
?>