Login   Register  
PHP Classes
elePHPant
Icontem

File: Xyndravandria/Mondraviel/Mondraviel.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 Mondraviel  >  Xyndravandria/Mondraviel/Mondraviel.php  >  Download  
File: Xyndravandria/Mondraviel/Mondraviel.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Xyndravandria Mondraviel
Template engine that fills tags with parameters
Author: By
Last change:
Date: 1 year ago
Size: 5,966 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 Mondraviel
------------------------
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 Mondraviel 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/Mondraviel/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\Mondraviel;

/// The main class of Mondraviel.
/// @abstract
abstract class Mondraviel {
      
   
/// The models registered to Mondraviel. @n
   /// Key = Identifier ; Value = File.
   /// <dl class = "return"><dt><b>%Type:</b></dt>
   /// <dd>array of string</dd></dl>
   /// @private 
   /// @static
   
private static $Model;
   
   
/// Registers a model to Mondraviel.
   /// @public
   /// @static
   /// @param string $File: The file to be registered as
   /// a model.
   /// @param string $ModelIdentifier: An identifier
   /// later used to access the model.
   /// @note $ModelIdentifier is an optional parameter. @n
   /// Its default value is 
   /// @verbatim \basename( $File ) @endverbatim.
   
public static function RegisterModel$File$ModelIdentifier '' ) {
      
// TODO: Validate $ModelIdentifier.
      
empty( $ModelIdentifier ) && $ModelIdentifier = \basename$File ); // TODO: Other default value?
      
if( isset( self::$Model$ModelIdentifier ] ) )
         throw new 
XyndravandriaMondravielException'A model with the identifier \'' $ModelIdentifier '\' already exists.' );
      elseif( ! \
is_file$File ) )
         throw new 
XyndravandriaMondravielException'File \'' $File '\' not found.' );
      else
         
self::$Model$ModelIdentifier ] = $File;
      return;
   }
   
   
/// Fills a model and returns the combined content.
   /// @public
   /// @static
   /// @param string $ModelIdentifier: The identifier of
   /// the model to be filled.
   /// @param array $Filling: The filling data as an
   /// array. @n
   /// [Place holder] => [the value to be inserted].
   /// @param boolean $IgnoreInexistentPlaceHolder:
   /// Whether value assigments for inexsitent place
   /// holders should be ignored or not. If not, an
   /// exception is thrown whenever a place holder in
   /// $Filling is not found in the model. Default value
   /// is false.
   /// @returns string
   /// @note $Filling and $IgnoreInexistentPlaceHolder
   /// are optional parameters.
   
public static function FillModel$ModelIdentifier$Filling = array( ), $IgnoreInexistentPlaceHolder false ) {
      
$Content '';
      if( ! isset( 
self::$Model$ModelIdentifier ] ) )
         throw new 
XyndravandriaMondravielException'A model with the identifier \'' $ModelIdentifier '\' does not exist.' );
      else {
         
// TODO: Check again or _only_ here whether file exists?
         
$Content = \file_get_contentsself::$Model$ModelIdentifier ] );
         foreach( 
$Filling as $PlaceHolder => $Value ) {
            if( \
strpos$Content'$' $PlaceHolder ) === false ) {
               if( ! 
$IgnoreInexistentPlaceHolder )
                  throw new 
XyndravandriaMondravielException'Place holder \'$' $PlaceHolder '\' not found in \'' self::$Model$ModelIdentifier ] . '\'.' );
            } else 
               
$Content = \str_replace'$' $PlaceHolder$Value$Content );
         }
      }
      return 
$Content;
   }
   
}
?>