3ème édition du livre PHP 5 avancé

Eléphant du PHP | 97 Messages

21 août 2007, 18:58

Et je crois qu'il y en à une aussi dans le premier exemple de la page 115 :
<?php
$texte = "texte\n\r\"\'texte";

//affiche texte et "'texte, sur deux lignes
echo $texte;

//affiche texte et \"\' texte, sur deux lignes
echo addslashes($texte);

//affiche : texte\n\r\"\' texte, sur une ligne
echo addcslashes($texte, "\"'\n\r");
?>
comme
 "texte\n\r\"\'texte"
est entre guillemets l'apostrophe n'est donc pas pris en compte et s'affichera avec son slash.

Eléphant du PHP | 97 Messages

21 août 2007, 19:05

A la page 129 , je crois qu'il y a un prob avec l'exemple suivant ... :


Il est important de noter que la clé peut-être nulle.Pour tester si une clé a été trouvée, il
vous faudra utiliser l'opérateur === .
<?php
$caract = array('jeune','beau','geek','drole');
print_r($caract);
echo '<br>';
if(FALSE === array_search('jeune',$caract)){
	echo '<br>Trouvé jeune';
	}
if (in_array('geek',$caract)){
	echo '<br>Trouvé geek';
}
?>
Chez moi cela fonctionne si je fait
FALSE ==
ou encore
0 ===
, car si j'ai bien compris === est une égalité totale (type et valeur) ?

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

21 août 2007, 21:55

Bonjour je crois avoir décelé une petite erreur dans un exemple page 111 , au paragraphe Valeur ASCII d'un caractère
<?php
//script permettant d'afficher l'alphabet
for($i=97;$i<122;i++){
        $chaine.=chr($i);
}
echo $chaine;
?>
L'alphabet s'arrêtera à y.Ce serait plutot :
for ($i=97;$i<=122;i++)
Je dirai même plus :
for ($i=97;$i<=122;$i++) // ne pas oublier le $ de $i 
;)

Eléphant du PHP | 97 Messages

21 août 2007, 22:04

Oups hehehe oui ca c'est de mon cru :-*
Comme quoi on peut toujours faire des erreurs, même en recopiant.

ps : j'ajoute que j'adore ce livre par ailleurs, qui est limpide d'un point de vue pédagogique.
Et que si je notifie les erreurs (ou que je crois comme telles) que je rencontre c'est uniquement
dans une optique d'entraide.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

21 août 2007, 22:17

si je notifie les erreurs (ou que je crois comme telles) que je rencontre c'est uniquement dans une optique d'entraide.
C'est bien ainsi que nous l'avons tous compris
et c'est dans le même esprit que nous signalons ces quelques coquilles. :pouce:

Eléphant du PHP | 97 Messages

22 août 2007, 00:31

petite coquille à la page 134 - Tri multicritère :
<?php
$tab1 = array(2,6,9,6);
$tab2 = array(3,2,1,8);

array_multisort($tab1,$tab2);

foreach ($tab1 as $cle=>$valeur){
	echo "$cle-$valeur, ";
}
//affiche 0-2,1-6,3-6,2-9,
foreach($tab2 as $cle=>$valeur){
	echo "$cle-$valeur, ";
}
//affiche 0-3,1-2,3-8,2-1
?>
Cela affichera plutot :

Code : Tout sélectionner

0-2, 1-6, 2-6, 3-9,
et

Code : Tout sélectionner

0-3, 1-2, 2-8, 3-1,

Eléphant du PHP | 97 Messages

22 août 2007, 17:17

A la page 77 l'exemple suivant :
<?php
echo gettype("12"); //affiche : string
echo gettype(settype("12",'integer')); //affiche : integer
echo gettype(settype(12,'string')); //affiche : string
?>
Affiche l'erreur suivante :

Code : Tout sélectionner

Fatal error: Only variables can be passed by reference


J'aimerai bien d'ailleurs comprendre pourquoi, cette erreur à lieu, car même si les gettype des deux dernieres lignes n'affichent pas integer ou string , je pensais qu'elles auraient affiché "boolean" puisque settype renvoie un booléen d'aprés la doc php.... Je suis preneur pour une explication #-o

Eléphant du PHP | 97 Messages

22 août 2007, 19:27

Une petite coquille je crois à la page 86 :
<?php
$a = 9;
$b = 5;
$c = 11;


$resultat = ($b<$a)&&($a<$c);
if (!$resultat){
	echo "<BR>FALSE";
	}else{
	echo "<BR>TRUE";
	}
//renverra 1 (vrai)
//On indique ici que $a est compris entre $b et $c.



$resultat = ($b<$a)XOR($a<$c);
if (!$resultat){                            //Ici c'est moi qui ajoute les lignes pour tester $resultat....
	echo "<BR>FALSE";
	}else{
	echo "<BR>TRUE";
	}
	
//renverra 0 (faux)
//On indique ici que $a doit etre plus grand que $b ou plus petit que $c mais pas les deux
Pour le deuxieme résultat , je reçois TRUE et non FALSE. En revanche lorsque je met l'expression entre parenthése :
$resultat = (($b<$a)XOR($a<$c));
cela fonctionne.

ViPHP
ViPHP | 5924 Messages

22 août 2007, 22:23

J'aimerai bien d'ailleurs comprendre pourquoi, cette erreur à lieu, car même si les gettype des deux dernieres lignes n'affichent pas integer ou string , je pensais qu'elles auraient affiché "boolean" puisque settype renvoie un booléen d'aprés la doc php.... Je suis preneur pour une explication #-o
Le prototype de gettype a l'air assez volatile. Sur ta version de PHP, il y a de très grandes chances que la variable doive être passé par référence (c'est ce que dit l'erreur), et le problème, c'est que un retour de fonction ne peut pas être passé par référence.

Invité
Invité n'ayant pas de compte PHPfrance

22 août 2007, 22:29

ok je comprend, il y aurait donc selon les versions des prototypes différents de la fonction gettype() ?
Mieux vaut ne pas l'utiliser alors ?
Je ne me souviens plus de la version exacte de php que j'ai , mais je sais en tout cas
(enfin j'espere :?: ) qu'il s'agit de php5... j'ai installé la derniere version de xampp

ViPHP
ViPHP | 5924 Messages

22 août 2007, 22:47

Vas voir la doc (c'est un réflexe à avoir), ils écrivent en rouge que c'est une fonction qui est soumise à de nombreuses modifications.

Eléphanteau du PHP | 27 Messages

25 août 2007, 11:56

Bonjour, je cherche à me procurer le livre PHP5 avancé 3èmé édition mais il semble définitivement indisponible partout...

je voulais savoir si une 4ème édition allait voir le jour prochainement (et quand ?) ou s'il y a encore un moyen de trouver la 3ème édition.

merci d'avance.

Eléphant du PHP | 97 Messages

25 août 2007, 17:50

Bonjour, Damdec moi je l'ai acheté il y a quelques jours chez Eyrolles. Sinon tu peux peut-être jeter un coup d'oeil chez Gilbert Joseph.

(Ah effectivement indisponible chez Eyrolles...donc reste Gilbert Joseph en occasion..)

--------------------------------------------------------------------------------------------------------------------

Bon sinon (sans aucun rapport) voici une petite coquille dans l'exemple Execution d'une chaine de code PHP, page 163.
<?php
$code = " \$a++ ; \$a .= \"texte\" ; return \$a";
$a = 1;
$a = eval($code)
echo $a;
?>

Qui devrait s'écrire plutot :
<?php
$code = " \$a++ ; \$a .= \"texte\" ; return \$a;";
$a = 1;
$a = eval($code);
echo $a;
?>


Eléphanteau du PHP | 27 Messages

28 août 2007, 15:51

Merci Shadokou pour tes informations.

J'ai contacté Eric Daspet pour en savoir plus, et il m'a dit qu'une 4ème édition allait sortir très prochainement (environ 1 mois). Je vais donc sagement patienter pour avoir la toute nouvelle édition :P

Administrateur PHPfrance
Administrateur PHPfrance | 658 Messages

28 août 2007, 17:12

Merci Shadokou pour tes informations.

J'ai contacté Eric Daspet pour en savoir plus, et il m'a dit qu'une 4ème édition allait sortir très prochainement (environ 1 mois). Je vais donc sagement patienter pour avoir la toute nouvelle édition :P
Yeap normalement il devrait être dispo d'ici 2-3 semaines...


cyruss
Co-auteur du livre PHP 7 avancé
Co-auteur du livre Performances PHP : Audit et optimisation LAMP
Co-fondateur de l'Association Française des Utilisateurs de PHP http://www.afup.org
Formateur PHP pour Openska