Alpha Framework alpha--model
[ class tree: alpha--model ] [ index: alpha--model ] [ all elements ]

Source for file AlphaDAOProviderFactory.inc

Documentation is available at AlphaDAOProviderFactory.inc

  1. <?php 
  2.  
  3. /**
  4.  *
  5.  * A factory for creating DAO provider implementations that implement the
  6.  * AlphaDAOProviderInterface interface.
  7.  * 
  8.  * @package alpha::model
  9.  * @since 1.1
  10.  * @author John Collins <dev@alphaframework.org>
  11.  * @version $Id: AlphaDAOProviderFactory.inc 1458 2011-12-04 16:18:50Z johnc $
  12.  * @license http://www.opensource.org/licenses/bsd-license.php The BSD License
  13.  * @copyright Copyright (c) 2011, John Collins (founder of Alpha Framework).
  14.  *  All rights reserved.
  15.  * 
  16.  *  <pre>
  17.  *  Redistribution and use in source and binary forms, with or
  18.  *  without modification, are permitted provided that the
  19.  *  following conditions are met:
  20.  * 
  21.  *  * Redistributions of source code must retain the above
  22.  *    copyright notice, this list of conditions and the
  23.  *    following disclaimer.
  24.  *  * Redistributions in binary form must reproduce the above
  25.  *    copyright notice, this list of conditions and the
  26.  *    following disclaimer in the documentation and/or other
  27.  *    materials provided with the distribution.
  28.  *  * Neither the name of the Alpha Framework nor the names
  29.  *    of its contributors may be used to endorse or promote
  30.  *    products derived from this software without specific
  31.  *    prior written permission.
  32.  *   
  33.  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  34.  *  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  35.  *  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  36.  *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  37.  *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  38.  *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  39.  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  40.  *  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  41.  *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  42.  *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  43.  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
  44.  *  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  45.  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  46.  *  </pre>
  47.  *  
  48.  */
  49.     /**
  50.      * Trace logger
  51.      * 
  52.      * @var Logger 
  53.      * @since 1.1
  54.      */
  55.     private static $logger null;
  56.     
  57.     /**
  58.      * A static method that attempts to return a AlphaDAOProviderInterface instance
  59.      * based on the name of the provider class supplied.
  60.      * 
  61.      * @param $providerName The class name of the provider class, should be in the alpha::model package.
  62.      * @param $BO The AlphaDAO instance to pass to the persistance provider for mapping.
  63.      * @throws IllegalArguementException
  64.      * @return AlphaDAOProviderInterface 
  65.      * @since 1.1
  66.      */
  67.     public static function getInstance($providerName$BO{
  68.         if(self::$logger == null)
  69.             self::$logger new Logger('AlphaDAOProviderFactory');
  70.         
  71.         self::$logger->debug('>>getInstance(providerName=['.$providerName.'], BO=['.print_r($BOtrue).'])');
  72.         
  73.         global $config;
  74.         
  75.         if(file_exists($config->get('sysRoot').'alpha/model/'.$providerName.'.inc')) {
  76.             require_once $config->get('sysRoot').'alpha/model/'.$providerName.'.inc';
  77.             
  78.             $instance new $providerName;
  79.             $instance->setBO($BO);
  80.             
  81.             if(!$instance instanceof AlphaDAOProviderInterface)
  82.                 throw new IllegalArguementException('The class ['.$providerName.'] does not implement the expected AlphaDAOProviderInterface interface!');
  83.             
  84.             self::$logger->debug('<<getInstance: [Object '.$providerName.']');
  85.             return $instance;
  86.         }else{
  87.             throw new IllegalArguementException('The class ['.$providerName.'] is not defined anywhere!');
  88.         }
  89.         
  90.         self::$logger->debug('<<getInstance');
  91.     }
  92. }
  93.  
  94. ?>

Documentation generated on Tue, 13 Dec 2011 20:25:49 +0000 by phpDocumentor 1.4.3