DB_DataObject::raiseError (Previous) (Next) DB_DataObject_FormBuilder

View this page in Last updated: Sun, 24 Aug 2008
English | Dutch | French | German | Hungarian | Japanese | Polish | Russian | Spanish | Plain HTML

Transtypage - Dates, Blobs et Null

Transtypage - Dates, Blobs et Null --  DB_DataObject_Cast ::date(), ::blob(), ::sql()

Travailler avec le transtypage (tout type excepté les chaînes de caractères et le nombres)

Avertissement

Ceci est expérimental ! Bien que ce soit documenté, c'est actuellement supporté uniquement sur une liste limitée de base de données (envoyez-moi des patchs si vous voulez que cela supporte votre base de données favorites) et l'API interne devrait changer dans le futur...

DataObjects est une façon très simple de travailler avec les bases de données qui sont focalisées sur les nombres et les chaînes de caractères. Vous pouvez également l'utiliser sur les champs date (bien que vous deviez formater vos chaînes correctement) et vous pouvez l'utiliser avec d'autres types en utilisant des requêtes SQL spéciales, et la chaîne de caractères "null" est automatiquement convertie en NULL dans la base de données.

Dans un but de fournir une façon claire de coder les types riches de base de données, l'objet DB_DataObject_Cast a été créé. Il propose de créer simplement un objet représentant la plus part des types les moins fréquemment utilisés. A suivre, un exemple d'utilisation pour créer quelques types simples.

L'objet de transtypage peut être utilisé dans la construction de la requête et dans l'assignement de valeurs.

Comme vous pouvez le voir, ce composant est basique, donc, si vous voulez d'autres fonctionnalités, si vous avez des idées, n'hésitez surtout pas à me contacter à l'adresse email alan_k at php dot net.

Le type Date

La plupart des dates sont stockées dans une base de données au format standard ISO, cette méthode vous permet de créer des types Date, depuis soit l'année, le mois, le jour, humainement lisibile (jour/mois/année) ou au format ISO standard année-mois-jour. Il complète les valeurs restantes en se basant sur des règles simples.

Exemple 39-3. Insertion d'une date dans divers formats


<?php

$person DB_DataObject::factory('person');
$person->name 'fred'

// utilisation d'une date humainement lisibile

// format complet
$person->birthday = new DB_DataObject_Cast::date('21/12/2003');

// utilisation seulement du mois/année - actuellement définie au 1 décembre 2003
$person->expires =  DB_DataObject_Cast::date('12/2003');

// utilisation uniquement de l'année - actuellement définie au 1 jan 2003
$person->expires DB_DataObject_Cast::date(2003);

// utilisation du format standard ISO
// format complet
$person->birthday =  DB_DataObject_Cast::date('2003-12-21');

// utilisation seulement du année-mois - actuellement définie au 1 décembre 2003
$person->expires =  DB_DataObject_Cast::date('2003-12');

// utilisation d'une syntaxe avec tableau
// format complet
$person->birthday =  DB_DataObject_Cast::date(2003,12,21);

// utilisation seulement du année-mois - actuellement définie au 1 décembre 2003
$person->expires =  DB_DataObject_Cast::date(2003,12);

// les valeurs réelles sont sotckées dans una variable objet
echo $person->birthday->year// affiche 2003
echo $person->birthday->month// affiche 12
echo $person->birthday->day// affiche 21

// vous pouvez effectuer des additions simples de date (similaire à mktime)
$d DB_DataObject_Cast::date('01/12/2003');

$nextMonth DB_DataObject_Cast::date($d->year,$d->month+1,1);
?>

DB_DataObject::raiseError (Previous) (Next) DB_DataObject_FormBuilder

Download Documentation Last updated: Sun, 24 Aug 2008
Do you think that something on this page is wrong? Please file a bug report or add a note.
User Notes:
Note by: monkeboy
Don't forget to add the include:

include_once 'DB/DataObject/Cast.php';

You need to do the following to use the SQL NOW() datetime function:

$table->created_on = DB_DataObject_Cast::sql('NOW()');
$table->update();

Hope that helps someone.

(I'm not sure if I agree that this is a cast function, I think it is more like a 'raw' or 'do not escape', i thought casting was changing data types, e.g. string to int is a cast. But who cares what name it has -- it works :-) )

monk.e.boy