Etendre Zend_Db_Table_Abstract

Logo Zend Framework

Quelques idées pour étendre Zend_Db_Table_Abstract.

Truncate

La commande SQL TRUNCATE permet de supprimer tous les enregistrement d'une table. Elle est plus rapide qu'un DELETE et à l'avantage de réinitialiser à 0 l'auto-incrément. C'est très utile dans le cadre de tests unitaires pour "nettoyer" les tables.

abstract class Wiip_Db_Table_Abstract extends Zend_Db_Table_Abstract
{
    /**
     * Envoie une commande SQL TRUNCATE à la table
     */
 
    public function truncate()
    {
        $db = $this->getAdapter();
        $db->query('TRUNCATE ' . $db->quoteIdentifier($this->_name));
    }
}

Définir automatiquement le nom de la table

J'ai l'habitude de placer mes modèles dans le répertoire /library/Wiip/Model. Le nom des classes associées à mes tables est donc de la forme Wiip_Model_NomDeLaTable. J'ai donc surchargé la méthode _setupTableName pour qu'elle détermine automatiquement le nom de mes tables à partir du nom de la classe.

abstract class Wiip_Db_Table_Abstract extends Zend_Db_Table_Abstract
{
    /**
     * Extrait le nom de la table à partir du nom de la classe
     */
    protected function _setupTableName()
    {
        if (!$this->_name) {
            $parts = explode('_', get_class($this));
            $this->_name = strtolower(end($parts));
        }
        parent::_setupTableName();
    }
}

Définir automatiquement la classe associée aux enregistrements

Pour les enregistrements, j'ajoute le préfixe _Row au nom de la classe. Je peux donc définir automatiquement la propriété _rowClass avec le code suivant :

abstract class Wiip_Db_Table_Abstract extends Zend_Db_Table_Abstract
{
    /**
     * Définit automatiquement le nom de la classe associée aux enregistrements
     */
    public function init()
    {
    	$this->_rowClass = get_class($this) . '_Row';
    }
}

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement. If you have a Gravatar account, used to display your avatar.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].

Plus d'informations sur les options de formatage

CAPTCHA
La vérification ne tient pas compte des minuscules ou des majuscules.
Image CAPTCHA
Enter the characters shown in the image.