Source for file jDao.class.php

Documentation is available at jDao.class.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage dao
  5. @author     Laurent Jouanneau
  6. @copyright   2005-2014 Laurent Jouanneau
  7. @link        http://www.jelix.org
  8. @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  9. */
  10.  
  11. /**
  12.  *
  13.  */
  14. require_once(JELIX_LIB_PATH.'db/jDb.class.php');
  15. require_once(JELIX_LIB_PATH.'dao/jDaoRecordBase.class.php');
  16. require_once(JELIX_LIB_PATH.'dao/jDaoFactoryBase.class.php');
  17.  
  18. /**
  19.  * Factory to create DAO objects
  20.  * @package  jelix
  21.  * @subpackage dao
  22.  */
  23. class jDao {
  24.  
  25.     /**
  26.     * creates a new instance of a DAO.
  27.     * If no dao is founded, try to compile a DAO from the dao xml file
  28.     * @param string|jSelectorDao$Daoid the dao selector
  29.     * @param string $profile the db profile name to use for the connection.
  30.     *    If empty, use the default profile
  31.     * @return jDaoFactoryBase  the dao object
  32.     */
  33.     public static function create ($DaoId$profile=''){
  34.         if(is_string($DaoId))
  35.             $DaoId new jSelectorDao($DaoId$profile);
  36.  
  37.         $c $DaoId->getDaoClass();
  38.         if(!class_exists($c,false)){
  39.             jIncluder::inc($DaoId);
  40.         }
  41.         $conn jDb::getConnection ($profile);
  42.         $obj new $c ($conn);
  43.         return $obj;
  44.     }
  45.  
  46.     static protected $_daoSingleton=array();
  47.  
  48.     /**
  49.     * return a DAO instance. It Handles a singleton of the DAO.
  50.     * If no dao is founded, try to compile a DAO from the dao xml file
  51.     * @param string|jSelectorDao$Daoid the dao selector
  52.     * @param string $profile the db profile name to use for the connection.
  53.     *    If empty, use the default profile
  54.     * @return jDaoFactoryBase  the dao object
  55.     */
  56.     public static function get ($DaoId$profile=''{
  57.  
  58.        $sel new jSelectorDao($DaoId$profile);
  59.        $DaoId $sel->toString ().'#'.$profile;
  60.  
  61.         if (isset (self::$_daoSingleton[$DaoId])){
  62.             self::$_daoSingleton[$DaoIdself::create ($sel,$profile);
  63.         }
  64.         return self::$_daoSingleton[$DaoId];
  65.     }
  66.  
  67.     /**
  68.      * Release dao singleton own by jDao. Internal use.
  69.      * @internal
  70.      * @since 1.3
  71.      */
  72.     public static function releaseAll({
  73.         self::$_daoSingleton array();
  74.     }
  75.  
  76.     /**
  77.     * creates a record object for the given dao
  78.     * @param string $Daoid the dao selector
  79.     * @param string $profile the db profile name to use for the connection.
  80.     *    If empty, use the default profile
  81.     * @return jDaoRecordBase  a dao record object
  82.     */
  83.     public static function createRecord ($DaoId$profile=''){
  84.         $sel new jSelectorDao($DaoId$profile);
  85.         $c $sel->getDaoClass();
  86.         if(!class_exists($c,false)){
  87.             jIncluder::inc($sel);
  88.         }
  89.         $c $sel->getDaoRecordClass();
  90.         $obj new $c();
  91.         return $obj;
  92.     }
  93.  
  94.     /**
  95.      * return an instance of a jDaoConditions object, to use with
  96.      * a findby method of a jDaoFactoryBase object.
  97.      * @param string $glueOp value should be AND or OR
  98.      * @return jDaoConditions 
  99.      * @see jDaoFactoryBase::findby
  100.      */
  101.     public static function createConditions ($glueOp 'AND'){
  102.         $obj new jDaoConditions ($glueOp);
  103.         return $obj;
  104.     }
  105. }

Documentation generated on Mon, 26 Oct 2015 21:52:28 +0100 by phpDocumentor 1.4.3