Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-06-2011 14:28:00

propolis
Membre
Date d'inscription: 03-05-2011
Messages: 14

Zend_Db_Expr et une fonction personnelle

Bonjour,

Sachant que ceci existe :
$select->from('myTable'), array('nouvelle donne' => new Zend_Db_Expr('10 * donne') );

Pensez-vous qu'il est possible de faire quelquechose dans le genre :

$select->from('myTable'), array('nouvelle donne' => new Zend_Db_Expr( new MyClass('donne') ) );


Merci.

Hors ligne

 

#2 17-06-2011 15:26:58

f.garoby
Membre
Date d'inscription: 02-03-2011
Messages: 105

Re: Zend_Db_Expr et une fonction personnelle

Après avoir rapidement lu le code de Zend_Db_Expr, j'ai envie de dire que ça se tente !

En effet, le constructeur de Zend_Db_Expr se contente de stocker ce que renvoie $param->__toString(), où $param est ce qu'on lui passe en paramètre du constructeur...

Hors ligne

 

#3 17-06-2011 15:43:09

propolis
Membre
Date d'inscription: 03-05-2011
Messages: 14

Re: Zend_Db_Expr et une fonction personnelle

Exact,
mais justement j'obtiens une erreur du style impossible de convertir en string ce paramètre ...

Mais mon idée est tout de même bizarre, car Zend_Db_Expr est censé être une expression que comprend le SQL, du type LOWER, etc ... or moi, je que je cherche à faire, c'est un traitement particulier des données récupérée par une requête. Habituellement, ce genre de traitement se fait APRES requete. Et je cherche donc à savoir si il est possible de faire ce traitement en même temps que la requete.

Ca pourrait être : "SELECT maFonctionPhp('maColonne') FROM MyTable"

j'ai peur de ne pas être très clair ...

Hors ligne

 

#4 17-06-2011 16:33:28

f.garoby
Membre
Date d'inscription: 02-03-2011
Messages: 105

Re: Zend_Db_Expr et une fonction personnelle

Ah !
Bon, pour répondre au premier problème : que se passe-t-il si tu fais ceci ?

Code:

[lang=php]
$zde =  new MyClass('donne');
$select->from('myTable'), array('nouvelle donne' => new Zend_Db_Expr( $zde ) );

Car je sais qu'en PHP, tu ne peux enchainer l'appel de méthodes d'un objet à la suite de son instanciation, en gros tu ne peux pas faire ça :

Code:

[lang=php]
new MaClass()->maMethode1()->maMethode2();

Tu es obligé de faire ça :

Code:

[lang=php]
$o = new MaClass();
$o->maMethode1()->maMethode2();

Ce qui est bien dommage car ça limite l'usage du chaînage de méthodes. D'autant plus que c'est tout à fait faisable dans d'autres langages objet, comme Java

Et pour ta 2° question : en effet, tu ne peux pas demander à SQL d'exécuter une fonction PHP. Soit tu passes le résultat de la fonction PHP à Zend_Db_Expr, soit tu crées une UDF, qui ferait alors le travail que doit faire ta fonction PHP.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages