Se connecter avec
S'enregistrer | Connectez-vous

[RESOLU][PHP] condition zarb ..

Dernière réponse : dans Programmation

Salut à tous IDN, j'ai un ptit script que j'ai fais y'a 5 minutes et demie :

  1. <?
  2. $link = "<a href="http://www.biduleeee.com/" target="_blank">http://www.biduleeee.com/</a>";
  3. $fh = &fopen($link, "r") or die("Could not open $link");
  4. ?>


Et j'aimerai rajouter une conditon mais c'est un peu zarb, je voudrai que si l'ouverture ne se fait pas, au lieu de dire Could not open, j'aimerai executer d'autres instructions .. Comment faire ?
Merci d'avance,
fclm

Autres pages sur : resolu php condition zarb

Lassé par la pub ? Créez un compte

fclm a dit :
Salut à tous IDN, j'ai un ptit script que j'ai fais y'a 5 minutes et demie :

  1. <?
  2. $link = "<a href="http://www.biduleeee.com/" target="_blank">http://www.biduleeee.com/</a>";
  3. $fh = &fopen($link, "r") or die("Could not open $link");
  4. ?>


Et j'aimerai rajouter une conditon mais c'est un peu zarb, je voudrai que si l'ouverture ne se fait pas, au lieu de dire Could not open, j'aimerai executer d'autres instructions .. Comment faire ?
Merci d'avance,
fclm


  1. <?
  2. $link = "<a href="http://www.biduleeee.com/" target="_blank">http://www.biduleeee.com/</a>";
  3. $fh = &fopen($link, "r");
  4.  
  5. if(!is_resource($fh)){
  6. /**
  7. * Tes instructions
  8. */
  9. }
  10. ?>


Si j'ai bien compris ( http://www.php.net/is_resource )

coca25 a dit :
il n'y a pas besoin d'utiliser is_ressource (), un simple:
  1. if (!$fh)
  2. {
  3. // ...
  4. }

suffit.


alors moi je dit beurk, mauvaise pratique, à éviter, tout ça (faible typage, casting, consommation de ressource), mais c'est un vaste débat d'un autre niveau.

Sinon oui ça suffit mais ce n'est pas la bonne pratique :) .

je vois pas en quoi ce n'est pas la bonne pratique, il n'y a aucun problème de cast:
la valeur de retour de fopen en cas d'échec:
Citation :

Si l'ouverture échoue, la fonction retourne FALSE et une alerte E_WARNING sera générée. Vous pouvez utiliser le caractère @ pour supprimer cette alerte.


et une ressource est considérée comme "vrai":
Citation :

Toutes les autres valeurs sont considérées comme vraies (TRUE) (y compris les ressources).

coca25 a dit :

et une ressource est considérée comme "vrai":
Citation :

Toutes les autres valeurs sont considérées comme vraies (TRUE) (y compris les ressources).


Donc castée ;)  mais tu as raison je suis plus royaliste que le roi (la doc) :) 

Ceci dit, si tu agit sur cet élément en tant que ressource dans ta condition tu as plutot interet à etre certain que s'en est une et pas un string casté en booléen par php... Donc mauvaise pratique tout ça... Mais le débat est vaste :) 

je disais qu'il n'y avait pas de problème de cast et non pas qu'il n'y avait pas de cast, mais le débat est vaste, tu as raison.

personnellement, je pars du principe que la base de php est qu'il n'y a pas de typage, il est déterminé à l'execution.

le if est exécuté après le fopen, il n'y a que 2 choix: (bool) FALSE ou (ressource), il n'y a pas de string casté en booléen et autre ;) 

là ou je serais complétement d'accord, c'est dans des langages basés sur les types tel que C par exemple, où on peut lire un %d sur du char.

coca25 a dit :
je disais qu'il n'y avait pas de problème de cast et non pas qu'il n'y avait pas de cast, mais le débat est vaste, tu as raison.

personnellement, je pars du principe que la base de php est qu'il n'y a pas de typage, il est déterminé à l'execution.

le if est exécuté après le fopen, il n'y a que 2 choix: (bool) FALSE ou (ressource), il n'y a pas de string casté en booléen et autre ;) 

là ou je serais complétement d'accord, c'est dans des langages basés sur les types tel que C par exemple, où on peut lire un %d sur du char.


Tout d'accord tout pareil :) 

... Sauf :
quand tu développes dans un langage faiblement typé , meme si une ligne de code est sous une autre, tu ne peux pas savoir ou te menera la prochaine refactorisation.

C'est là ou les "bonnes pratiques" entrent en piste et te permettent de coder aujourd'hui sur une condition qui suit une déclaration et de prévoir le jour ou cette condition sera dans un objet métier au fond de ton framework et recevra une propriété statique de je ne sais quel pattern registry en argument :) 

de même si je décide d'englober le fopen dans une méthode et de retourner comme réponse une ressource particulière pour signifier une erreur, le is_ressource() ne sera plus valable.

bref, tout ca pour dire (de mon point de vue), que php, c'est des instructions du genre:
  1. $db = @mysql_connect('localhost') or die('Erreur base: ' . mysql_error());

Lassé par la pub ? Créez un compte
Tom's guide dans le monde