<?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;
/// A class to Cache a certain types of instances. @n
/// The class of theses objects has to implement the
/// Cacheable interface.
/// @abstract
class Cache {
/// The objects in the Cache.
/// <dl class = "type"><dt><b>%Type:</b></dt>
/// <dd>array of Cache::$Type</dd></dl>
/// @private
private $Object;
/// The last object cached.
/// <dl class = "return"><dt><b>%Type:</b></dt>
/// <dd>Cache::$Type</dd></dl>
/// @private
private $CurrentObject = null;
/// The class of the instances to be saved.
/// <dl class = "type"><dt><b>%Type:</b></dt>
/// <dd>string</dd></dl>
/// @private
private $Class;
/// Creates a new Cache.
/// @public
/// @param string $Class: The class of the instances
/// to Cache.
public function __construct( $Class ) {
//\settype( $Class, 'string' );
$this->Object = array( );
$this->Class = $Class;
return;
}
/// Adds an object to the Cache.
/// @public
/// @param object $Object: The object to be added to
/// the Cache.
public function Add( $Object ) {
//\settype( $Object, 'object' );
if( \get_class( $Object ) != $this->Class )
throw new XyndravandriaDyverathException( 'Unable to add $Object to the Cache, since its class is not \'' . $this->Class . '\'.' );
else if( ! ( $Object instanceof Cacheable ) )
throw new XyndravandriaDyverathException( 'Unable to add $Object to the Cache, since it dies not implement Cacheable.' );
else if( $this->Get( $Object->UniqueIdentifier( ) ) )
throw new XyndravandriaDyverathException( 'Unable to add $Object to the Cache, since it is already saved.' );
else
return $this->Object[ ] = $this->CurrentObject = $Object;
return;
}
/// Gets an object in the Cache by its unique
/// identifier.
/// @public
/// @param string $UniqueIdentifier: The unique
/// identifier of the object to get.
/// @returns Cache::$Type or false
public function Get( $UniqueIdentifier ) {
//\settype( $UniqueIdentifier, 'string' );
foreach( $this->Object as $Object )
if( $Object->UniqueIdentifier( ) == $UniqueIdentifier )
return $Object;
return false;
}
/// Returns Cache::$CurrentObject.
/// @public
/// @returns Cache::$Type or null
public function CurrentObject( ) {
return $this->CurrentObject;
}
}
/// The interface of CacheableObject.
interface Cacheable {
/// Should return the Cacheable object's Cache.
/// @public
/// @static
/// @returns Cache
static function Cache( );
/// Gets an identifier which is unique for all
/// instances of the class which implements this
/// interface.
/// @public
/// @returns string
function UniqueIdentifier( );
/// Should be overriden in a subclass and then return
/// its declared name without the namespace.
/// @abstract
/// @static
/// @returns string
static function ClassName( );
}
?>
|