Zend_Db

Zend_Db_Table_Plugin

Ce week-end je m'apprêtait à développer un système de plugin pour Zend_Db_Table quand j'ai eu la présence d'esprit de consulter la feuille de route du ZF (http://framework.zend.com/roadmap). Bien m'en a pris car ce composant est justement prévu pour la prochaine version du framework (1.10). Il a même failli être intégré à la 1.9.

Structurer sa base de données pour des prix dégressifs

Les prix dégressifs sont courants dans le commerce électronique (tout comme dans le commerce traditionnel d'ailleurs). L'idée, c'est que le prix diminue en fonction des quantités demandées. Cela peut également s'appliquer aux tarifs de livraison : plus le poids augmente, plus les frais de livraison augmentent. Par exemple, voici des prix dégressifs pour des tirages photos :

Prix des tirages photos
de 1 à 1000,14 €
de 101 à 2000,12 €
plus de 2000,10 €

Zend Framework : contrôleur CRUD

Logo Zend Framework

Dans une application MVC qui a besoin de faire persister des données, les contrôleurs doivent réaliser 4 opérations de base qu'on désigne souvent par l'abréviation CRUD : Create, Read, Update et Delete. Pour une application développée avec le Zend Framework, un contrôleur est en fait une classe dérivée de Zend_Controller_Action. Afin d'éviter de dupliquer inutilement du code, les développeurs choisissent souvent d'écrire une classe de base qui fournira une implémentation standard de ces opérations.

Relations Zend_Db_Table - Episode 2

Logo Zend Framework

Il y a quelques jours, j'avais écrit un article qui expliquait comment utiliser les relations Zend_Db_Table pour charger à la demande (lazy loading) les enregistrements parents d'un objet Zend_Db_Table_Row.

Relations Zend_Db_Table

Logo Zend Framework

Zend_Db_Table permet de définir des relations entre les tables. Si par exemple on a une table factures et une table clients :

CREATE TABLE `clients` (
  `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `nom` char(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
 
CREATE TABLE `factures` (
  `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `numero` char(20) NOT NULL,
  `client_id` smallint(5) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `client_id` (`client_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
 
ALTER TABLE `factures`
  ADD CONSTRAINT `client_ibfk` FOREIGN KEY (`client_id`) 
  REFERENCES `clients` (`id`) ON DELETE CASCADE;

Etendre Zend_Db_Table_Abstract

Logo Zend Framework

Quelques idées pour étendre Zend_Db_Table_Abstract.

Zend_Db_Table_Row : transformer les colonnes de type date en objet Zend_Date

Logo Zend Framework

Le module Active Record de Rails convertit les colonnes de type date en instance de la class Date de Ruby. On peut très simplement faire la même chose avec Zend_Db_Table_Row. Il suffit de surcharger la méthode magique __get.

Trucs et astuces

Utiliser Zend_View_Helper_HeadScript::prepend pour charger vos scripts Javascript dans un layout

Les scripts Javascript doivent être chargés dans un ordre bien particulier. Si vous utilisez ExtJS par exemple, vous devez d'abord charger un adaptateur comme ext-base.js par exemple, puis le fichier principal ext-all.js, puis éventuellement un fichier spécifique à votre vue (login.js par exemple).

Subscribe to RSS - Zend_Db