function CopixDAOGenerator(&$compiler) { $this->_compiler =& $compiler; $this->_compiledDAOClassName = CopixDAOFactory::getDAOName($compiler->_DAOid); $this->_compiledDAORecordClassName = CopixDAOFactory::getDAORecordName($compiler->_DAOid); }
/** * Assigne le chemin vers le fichier PHP à utiliser et à surcharger pour générer le DAO * @param string $pFilePath le chemin absolu vers le fichier PHP à utiliser * @param string $pRecordName le nom de la classe PHP qui est définie par l'utilisateur pour reprsenter l'enregistrement * @param string $pDAOName le nom de la classe PHP qui est définie par l'utilisateur pour représenter le DAO */ public function setPHPClassFilePath($pFilePath, $pRecordName = null, $pDAOName = null) { if (Copix::RequireOnce($this->_phpClassFilePath = $pFilePath)) { //On s'occupe de récupérer le nom du Record à utiliser si besoin if ($pRecordName !== null) { if (!class_exists($pRecordName)) { throw new Exception('Demande d utilisation de ' . $pRecordName . ' pour le record mais la classe n est pas définie dans le fichier ' . $pFilePath); } else { $this->_userDefinedDAORecordName = $pRecordName; } } else { //on utilise le nom par défaut if (class_exists($daoRecordName = CopixDAOFactory::getDAORecordName($this->_DAOId, false))) { $this->_userDefinedDAORecordName = $daoRecordName; } } //On s'occupe de récupérer le nom du DAO à utiliser si besoin if ($pDAOName !== null) { if (!class_exists($pRecordName)) { throw new Exception('Demande d utilisation de ' . $pDAOName . ' pour le DAO mais la classe n est pas définie dans le fichier ' . $pFilePath); } else { $this->_userDefinedDAOName = $pDAOName; } } else { //on utilise le nom par défaut if (class_exists($daoName = CopixDAOFactory::getDAOName($this->_DAOId, false))) { $this->_userDefinedDAOName = $daoName; } } } else { throw new Exception('impossible de charger le fichier de définition demandé pour le DAO ' . $pFilePath); } }
/** * Génération du code PHP pour le constructeur du DAO * @return string */ public function _generatePHP4DAOConstructor() { list($sqlFromClause, $sqlWhereClause) = $this->getFromClause(); $sqlSelectClause = $this->getSelectClause(); if ($this->_definition->getUserDefinedDAOName() !== null) { $result = ' public function __construct ($pConnectionName = null) {' . "\n"; if (in_array(strtolower(CopixDAOFactory::getDAOName($this->_definition->getDAOId(), false)), $this->_definition->getUserDAOClassMethods()) or in_array('__construct', $this->_definition->getUserDAOClassMethods())) { $result .= ' parent::__construct ();' . "\n"; } //ne remplace que si on spécifie une connexion à utiliser $result .= ' if ($pConnectionName != null) $this->_connectionName = $pConnectionName;'; $result .= ' $this->_selectQuery =\'' . $sqlSelectClause . $sqlFromClause . $sqlWhereClause . '\';' . "\n"; $result .= " }\n"; } else { $result = ' public function __construct ($pConnectionName = null) {' . "\n"; //ne remplace que si on spécifie une connexion à utiliser $result .= ' if ($pConnectionName != null) $this->_connectionName = $pConnectionName;'; $result .= ' $this->_selectQuery =\'' . $sqlSelectClause . $sqlFromClause . $sqlWhereClause . '\';' . "\n"; $result .= ' }' . "\n"; } return $result; }