Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/01/2012, 19h23   #1
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Par défaut Une question de débutant sur les conditions

Bonjour à tous,

J'ai trouvé ce code et j'ai du mal a comprende ce que fais le dernier return
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
		if (!parent::install() OR		
			!$this->registerHook('rightColumn') OR
			!$this->registerHook('header'))
 
			return (false);
 
		$this->setDefaults();
 
		if (!$this->saveSettings()) return false;
 
		return true;
Je pense que c'est égal à:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
		if (!parent::install() OR		
			!$this->registerHook('rightColumn') OR
			!$this->registerHook('header')){
 
			return (false);
}
 
		$this->setDefaults();
 
		if (!$this->saveSettings()){ return false;
}else{
 
		return true;
}
Je suis un peu confu car il se trouve à la même hauteur que le if alors qu'il devarit etre tabulé sur la droite, non?
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 23h27   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonsoir,

tu as vu juste, ta reprise du code est exacte.
Voilà le problème lorsque l'auteur ne tient aucun compte des bonnes pratiques en matière de codage et de présentation.
Pour le relire c'est mariole. If faut toujours veiller à préserver la lisbilité du code source sinon bonjour le temps perdu. Avec la pratique, des bons réflexes s'installent et facilitent la vie.
Au début, j'ai commencé par relire mon propre code 2 ou 3 jours après l'avoir pondu, histoire de voir si c'était compréhensible et surtout à quelle vitesse je récupérais la logique. Le temps passé à me maudire m'a poussé à insérer des commentaires, à nommer mes variables de manière explicite et à présenter soigneusement mon code.

Voici le code présenté de manière lisible au premier coup d'oeil:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
if ( ! (parent::install() && $this->registerHook('rightColumn') && $this->registerHook('header'))) {
   return false;
}
 
$this->setDefaults();
 
if ( ! $this->saveSettings()) {
   return false;  
}
 
return true;
 
?>
Un rarccourci quand tu as un test de ce genre
Code :
1
2
3
4
5
6
if (test) {
   return false;
}
else {
   return true;
}
Le else est optionnel vu que le résultat de la première partie du code te provoque un return.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 23h31   #3
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Salut, merci pour ta réponse,

Mais qu'es-ce le dernier retun true?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<?php
 
if ( ! (parent::install() && $this->registerHook('rightColumn') && $this->registerHook('header'))) {
   return false;
}
 
$this->setDefaults();
 
if ( ! $this->saveSettings()) {
   return false;  
}
 
return true; 
 
?>
Il n'est pas perdu?
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 23h35   #4
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Citation:
Envoyé par pierrot10 Voir le message
Mais qu'es-ce le dernier retun true?
Il n'est pas perdu?
Non du tout.
Si les étapes en ligne 4 se passent bien, le code passe à la ligne 8 puis en ligne 10 si la sauvegarde des paramètres se passe bien, on passe à la ligne 14 => on renvoie true.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 23h41   #5
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Ben oui mais je ne comprends toujours pas,
si on passe à la ligne 14 par qu'a la ligne 10, tout ce passe bien, à quoi sert le return true
Ceci revient au même, non?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
if ( ! (parent::install() && $this->registerHook('rightColumn') && $this->registerHook('header'))) {
 
}
 
$this->setDefaults();
 
if ( ! $this->saveSettings()) {
 
}
 
 
 
?>
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 23h42   #6
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Ce code me parrait farfelu
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 23h49   #7
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Pour supprimer le dernier return false/true il suffit de faire :
Code :
return $this->saveSettings();
J'ai pas voulu aller trop vite mais bon
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 23h52   #8
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Voilà comment je l'aurais présenté ce bout de code :
Code :
1
2
3
4
5
6
7
8
9
<?php
 
if (parent::install() && $this->registerHook('rightColumn') && $this->registerHook('header')) {
   $this->setDefaults();
   return $this->saveSettings();   
}
return false;
 
?>
Plus clair ?
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 00h01   #9
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Ben non, et ca me semble tellement basic.

Pourquoi pas faire ca alors.
Code :
1
2
3
4
5
6
7
8
 
<?php
 
if (parent::install() && $this->registerHook('rightColumn') && $this->registerHook('header')) {
   $this->setDefaults();
   $this->saveSettings();   
} 
?>
le return me pertube....
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 00h05   #10
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Parce que la fonction doit renvoyer un boolean.
Ta version ne renvoie rien c'est-à-dire null c'est-à-dire toujours false.
Du coup la fonction appelante ne sait pas si ce bout de code s'est bien déroulé ou pas... En ne retournant rien, elle considerera toujours que ce bout de code s'est mal déroulé.
N'oublies pas que la fonction appelante peut réorienter le traitement en fonction du résultat renvoyé par ce bout de code.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 00h20   #11
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Ok super merci pour toutes tes explications
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 14h12   #12
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Re bonjour,
Je m'excuse pour mes questions de débutant, mais je me demande si je n'ai pas repris un code qui n'est pas propre. Et dans le doute de bien refaire ( et apprendre aussi) j'ai maimerais relancer quelques question différentes.

J'ai ceci
Code :
1
2
 
usort($this->tags, array($this, 'natorder'));
J'ai regardé la fonction usort et je devine que je peux aussi faire comme ceci
(en sachant que la fonction natorder existe)
Code :
usort($this->tags, 'natorder');
Mais pourquoi le gars mais un array($this,'natorder')?

Seonde question
J'ai ceci:
Code :
1
2
3
4
5
6
 
foreach ((array) $this->attributes as $key => $list){	
 
				uasort($this->attributes[$key]['values'], array($this, 'natorder'));
 
			}
Encore uen fois, pourquoi le gars met un array. Je pourrais faire comme ceci
Code :
1
2
3
4
5
6
 
foreach ($this->attributes as $key => $list){	
 
				uasort($this->attributes[$key]['values'], array($this, 'natorder'));
 
			}
Sachant que $this->attribut est déclaré comme ceci , dans ma class
Code :
public $attributes						= array();
Qu'es-ce que j'ai a gagner si je laissait mon freach avec le array()?

Merci pour vos éclaircissement!
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 14h30   #13
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

dans ce code : usort($this->tags, array($this, 'natorder')); la partie array($this, 'natorder'); correspond à un callback (fonction de rappel avec un contexte d'instance de classe): regardes ici

Ensuite pour ceci foreach ((array) $this->attributes as $key => $list) le (array) correspond à un cast explicit en type tableau : regardes ici.
Il est clair que si $attributes est typé en tableau, normalement cela est inutile. Mais dans son cas, la visibilité est public, donc il n'est pas aboslument certain que $attributes reste toujours un tableau. Pour s'en assurer, il faudrait réduire sa visibilité protected | private et lui rattacher un accesseur et/ou mutateur :
Code :
1
2
public function setAttribute($p) { ... }
public function getAttribute() { ... }
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h51.


 
 
 
 
Partenaires

Hébergement Web