variables %s %d ...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : variables %s %d ...

par BeRoots » 01 oct. 2008, 19:02

ok merci à tous :)

par savageman » 01 oct. 2008, 15:59

Oui, c'est en vue du passage à une fonction du genre sprintf().

Dans la cas présent, tu peux regarder le code de Hoa_Exception et tu verras que c'est vsprintf(). ;)

par BeRoots » 01 oct. 2008, 13:58

ooops je voulais dire l'exemple N°1 dans lequel aucun sprintf() ou autres fonction du genre n'est passer...


Cela veut il dire que c'est en vue d'un passage à une fonction du genre sprintf() ou alors on peut uliliser cela sans fonction php pour interpréter (donc directement interprété par zend core) ?

encore merci pour votre aide ;)

par furiouslol » 01 oct. 2008, 13:37

Si si y a un sprintf dans ton deuxième exemple, je te l'écris différemment
$query = sprintf ("SELECT id, admin FROM users WHERE login = %s AND passwd = %s"
                        , $db->quote($username),
                        , $db->quote(sha1($passwd))
                        );
$stmt = $db->query($query);
Et oui ca se fait dans d'autres fonction, comme dans ton exemple sur les exceptions, dans ce cas la, %s signifie que $filename est une string alors que %d signifie que $line est un entier, mais la je me répète un peu

par BeRoots » 01 oct. 2008, 13:10

Encore Merci :)

dernier point important:

dans mon exemple n°2, on a pas de fonction sprintf() ou autre... est ce que cela veut dire que c'est lors d la lever de l'exception que ces formatages seront fait?

est ce que ces formatages sont utilisés uniquement via des fonction php du genre de printf() ou est ce que cela peut être utiliser n'importe où?

par furiouslol » 30 sept. 2008, 13:34

Ben ...
Tiens regarde donc ceci : http://fr2.php.net/manual/fr/function.sprintf.php

Ce type de formatage de donnée est présent dans plusieurs fonctions autre que sprintf
T'as tous les types référencés ici, ce ne sont pas des variables mais des formatage de variables, dans ton premier exemple %d signifie que $line est un entier alors que %s signifie que $filename est une chaine de caractère, mais lit la doc sur le lien que je te met, et tu verras ce genre de formatage dans beaucoup d'autres fonctions qui écrivent des chaines de caractère variable

par BeRoots » 30 sept. 2008, 12:46

moi c'est pour des retours de variable système lors de lever d'exemple mais je trouve pas de listing des différentes var... %d doit être le n° de ligne de l'erreur... %s est le path vers script d'où vit l'erreur?

Si quelqu'un peut m'indiquer le chemin vers la doc, ou me donner plus d'infos sur cela ;)

par savageman » 30 sept. 2008, 06:25

Je vote pour la lisibilité !

De plus, on peut faire des trucs genre sprintf("%04d", 4), qui affichera 0004. Ca permet de formater comme on veut. ;)

par fab » 30 sept. 2008, 03:37

C'est principalement un héritage du C car en C tu as un "typage" des variables pour des raisons d'allocation de mémoire.
En PHP n'ayant pas cette contrainte de savoir qu'elle est le type de ta var j'avoue pas vraiment comprendre l'utilité de cette fonction sauf pour les aficionados du C :)
        $stmt = $db->query(sprintf("SELECT id, admin FROM users WHERE login = %s AND passwd = %s",
            $db->quote($username),
            $db->quote(sha1($passwd))
        )); 

Marchera très bien sous la forme :
$stmt = $db->query('SELECT id,admin FROM users WHERE login = '.$db->quote($username).' AND passwd = '.$db->quote(sha1($passwd)));
Enfin c'est que mon point de vue si je me trompe expliquez :)
Y a peut être des notions de performances du fait que c'est un héritage direct C par contre mais bon ça serait vraiment minime :)

Cependant certains utilisent cette méthode pour une question de lisibilité, c'est encore là un point de vue ou plutot un héritage des habitués du C :p

par furiouslol » 29 sept. 2008, 16:43

Tiens regarde donc ceci : http://fr2.php.net/manual/fr/function.sprintf.php

Ce type de formatage de donnée est présent dans plusieurs fonctions autre que sprintf

variables %s %d ...

par BeRoots » 29 sept. 2008, 16:06

Salut la compagnie ;)

Je recherche des infos et explications concernant un certain typage de variables.
Regarder les variable passer dans l'exeption suivante et précédé d'un signe %:
 if(headers_sent($filename, $line))
            throw new Hoa_Session_Exception(
                'Session must be started before any output ; ' .
                'output started in %s at line %d.', 1,
                array($filename, $line));
Regarder aussi cette exemple:
<?php


class UsersModel
{
	public static function getAuth ( $username, $passwd ) {
	
		$db = PDO2::getInstance();
		$stmt = $db->query(sprintf("SELECT id, admin FROM users WHERE login = %s AND passwd = %s",
			$db->quote($username),
			$db->quote(sha1($passwd))
		));
		
		$return = $stmt->fetch();
		$stmt->closeCursor();
		return $return;
	}
}
Si quelqu'un peu me donnée un max d'infos sur ce type de variables précédées par des % ;)
Merci de me précisé si il y a des différences techniques entre les deux examples...
Merci d'avance.