Structure de controle PHP avec : ?

mariea
WRInaute impliqué
WRInaute impliqué
 
Messages: 732
Inscription: 6 Mai 2005

Structure de controle PHP avec : ?

Message le Mer Mai 12, 2010 18:02

Bonjour,


Je veux modifier un forum PHP BB ..

et je tombe sur ce code ...

$this->meta['meta_title'] = ( !empty($this->meta['meta_title']) ) ? $this->meta_filter_txt($this->meta['meta_title']) : $page_title;


Qui pourrait m'aider à trouver comme interpréter cette structure de contrôle alternative .. ???

= ? :

MERCI

mariea
WRInaute impliqué
WRInaute impliqué
 
Messages: 732
Inscription: 6 Mai 2005

Re: Structure de controle PHP avec : ?

Message le Mer Mai 12, 2010 18:19

<?php
$hour = 11;

print $foo = ($hour < 12) ? "Good morning!" : "Good afternoon!";

?>
return Good morning!

mariea
WRInaute impliqué
WRInaute impliqué
 
Messages: 732
Inscription: 6 Mai 2005

Re: Structure de controle PHP avec : ?

Message le Mer Mai 12, 2010 18:26

je crois avoir trouve...

Par contre si quelcun sait comment retirer du TITLE des pages de billet le nom du forum ..ca m'intéresse ..
(avec PHPBB SEO)

je vois que ça n'a pas été modifié sur le forum WRI ..le rappel du nom du forum dans chaque titre de page n'a aucun intéret.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Re: Structure de controle PHP avec : ?

Message le Mer Mai 12, 2010 18:37

C'est une autre manière d'écrire un if {} else {} en php (perso je ne suis vraiment pas fan de cette notation qui est certes plus condensée mais moins lisible, menfin ça doit être une question d'habitude).


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Re: Structure de controle PHP avec : ?

Message le Mer Mai 12, 2010 19:07

mariea a écrit:Bonjour,


Je veux modifier un forum PHP BB ..

et je tombe sur ce code ...

$this->meta['meta_title'] = ( !empty($this->meta['meta_title']) ) ? $this->meta_filter_txt($this->meta['meta_title']) : $page_title;




Si je ne me trompe pas, cela revient à écrire :

Code: Tout sélectionner
if (!empty($this->meta['meta_title']) {
   $this->meta['meta_title'] = $this->meta_filter_txt($this->meta['meta_title'])
} else {
   $this->meta['meta_title'] = $page_title;
}


À confirmer svp, car j'ai un petit doute quand même n'aimant pas écrire de cette manière aussi condensé

mariea
WRInaute impliqué
WRInaute impliqué
 
Messages: 732
Inscription: 6 Mai 2005

Re: Structure de controle PHP avec : ?

Message le Mer Mai 12, 2010 19:12

merci .. oui. Si la condition est vraie, on valide la variable devant les deux points. Si false, c'est l'autre.


Dans PHPBB includes/functions.php
ligne 4014
le titre semble être créé ici :

function build_meta( $page_title = '') {
$this->meta['meta_desc'] = ( !empty($this->meta['meta_desc']) ) ? $this->meta['meta_desc'] : $this->meta_filter_txt($page_title . ' : ' . $this->meta['meta_desc_def']);

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: Structure de controle PHP avec : ?

Message le Mer Mai 12, 2010 19:16

Ca s'appelle un opérateur ternaire (c'est le seul opérateur à 3 arguments).

a?b:c vaut b si a est vrai et c sinon

Jacques.

mariea
WRInaute impliqué
WRInaute impliqué
 
Messages: 732
Inscription: 6 Mai 2005

pour la modification du TITLE

Message le Mer Mai 12, 2010 19:47

si ça intéresse quelcun voila ou ça se passe

viewtopic.php

// http://www.phpBB-SEO.com SEO TOOLKIT BEGIN - TITLE
$extra_title = ($start > 0) ? ' - ' . $user->lang['Page'] . ( floor( ($start / $config['posts_per_page']) ) + 1 ) : '';
page_header($topic_data['topic_title'] . ' : ' . $topic_data['forum_name'] . $extra_title);


il faut enlever
: ' . $topic_data['forum_name'] . $extra_title

:D :D :D :D


raljx
WRInaute accro
WRInaute accro
 
Messages: 2823
Inscription: 10 Juil 2006

Re: Structure de controle PHP avec : ?

Message le Mer Mai 12, 2010 22:26

UsagiYojimbo a écrit:C'est une autre manière d'écrire un if {} else {} en php (perso je ne suis vraiment pas fan de cette notation qui est certes plus condensée mais moins lisible, menfin ça doit être une question d'habitude).


et d'age d'aussi :mrgreen: je me mets dans le lot


skyll
WRInaute passionné
WRInaute passionné
 
Messages: 1364
Inscription: 14 Oct 2005

Re: Structure de controle PHP avec : ?

Message le Jeu Mai 13, 2010 1:00

jcaron a écrit:Ca s'appelle un opérateur ternaire (c'est le seul opérateur à 3 arguments).
a?b:c vaut b si a est vrai et c sinon
Jacques.

+1
mais apparemment ce serais un poil plus lent qu'un if... donc je sais pas si c'est bon de l'utiliser...

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: Structure de controle PHP avec : ?

Message le Jeu Mai 13, 2010 1:16

Ce n'est pas exactement la même chose qu'un if, puisqu'il y a un résultat au final (alors que if évalue l'une ou l'autre option, mais le résultat de part et d'autre est perdu si tu ne l'affectes pas quelque part). Si tu as besoin du résultat et que tu en fais la même chose dans les deux cas, il n'y a pas de raison que ce soit plus lent.

a=b?c:d est équivalent à if (b) {a=c} else {a=d}

Dans le cas où "a" est quelque chose d'un peu plus complexe (genre $a[$b][$c]), l'opérateur ternaire évite de le parser deux fois, tu y gagnes donc quelques cycles à ce stade-là. Rien de flagrant...

Après c'est vraiment une question de style, et dans certains cas ça permet de faire des choses plus facilement. Exemple: tu appelles une fonction avec une tripotée d'arguments, et il y a juste un paramètre qui change suivant une condition. Si tu utilises if, tu dois faire:
if (condition)
{
fonction(parametre1,parametre2,parametre3,valeur1);
}
else
{
fonction(parametre1,parametre2,parametre3,valeur2);
}

Si tu utilises un opérateur ternaire, tu peux faire:
fonction(parametre1,parametre2,parametre3,condition?valeur1:valeur2);

Si les paramètres sont des expressions compliquées, tu y gagnes clairement en lisibilité.

Jacques.


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19598
Inscription: 8 Aoû 2004

Re: Structure de controle PHP avec : ?

Message le Jeu Mai 13, 2010 18:27

sur, par exemple
echo ($type=="vir"?"virement":"solde")." ".($value>0?"positif":($value==0?"nul":"négatif"));
imagine la complexité des if pour obtenir la même valeur


carole heinz
WRInaute accro
WRInaute accro
 
Messages: 2855
Inscription: 28 Fév 2007

Re: Structure de controle PHP avec : ?

Message le Jeu Mai 13, 2010 20:02

mariea a écrit:le rappel du nom du forum dans chaque titre de page n'a aucun intéret.

ça se discute je trouve


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités