[RESOLU] Comprendre cette fonction PHP.

Eléphanteau du PHP | 39 Messages

10 janv. 2019, 19:56

Bonjour,

Ayant des connaissances parcellaires en PHP, qui plus est éternel débutant, j'aimerai comprendre cette fonction PHP que je découvre dans un ensemble de script concernant un jeu :
function test()
{
	empty($this->error) or trigger_error(_MD_JEU_ERROR, E_USER_ERROR);
	return $this->test;
}
D'abord serait il possible de m'expliquer en détail cette ligne que voici:
empty($this->error) or trigger_error(_MD_JEU_ERROR, E_USER_ERROR);
Merci d'avance.
Respectueusement.
:)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

11 janv. 2019, 00:35

Bonjour,

En gros cette ligne dit :
- exécute la fonction empty(...)
- si ça échoue (càd que ça renvoie false), alors exécute la fonction trigger_error()

Il s'agit d'une syntaxe simplifiée qui du coup n'est pas très lisible.
L'équivalent complet serait celui-ci :
if (empty($this->error) === false) {
     trigger_error(_MD_JEU_ERROR, E_USER_ERROR);
}
Après si tu lis la doc des 2 fonctions utilisées, c'est assez simple :
http://php.net/empty : Vérifie si une variable est vide
http://php.net/trigger_error : déclenche une erreur (qui est gérée ailleurs dans le code) avec en message ce qu'il y a dans le 1er paramètre qui est une variable dans ton cas probablement définit ailleurs dans le code ; et le 2ème paramètre indique juste le type d'erreur : http://php.net/manual/fr/errorfunc.constants.php
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 39 Messages

11 janv. 2019, 11:47

Bonjour,
Merci pour tes explications,

Si la condition envoie false, c'est que ($this->error) est déterminé par celle ci comme étant vide ou n' existant pas?
Que signifie exactement ce symbole -> situé entre $this et error?
S'agirait il d'une liaison entre la variable $this et error ? Si oui en quoi consisterait cette liaison?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

11 janv. 2019, 15:30

C'est de la programmation orientée objet.
Je te laisse regarder sur wikipedia car leur explication sera + claire que la mienne probablement :)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 39 Messages

12 janv. 2019, 16:43

Et pour:
 trigger_error(_MD_JEU_ERROR, E_USER_ERROR);
Que signifierait les "_" (_MD_JEU_ERROR, E_USER_ERROR) ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

12 janv. 2019, 16:51

Absolument rien, c'est comme ça que le développeur a nommé ses variables
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 39 Messages

13 janv. 2019, 13:08

Oui alors cela sert de séparation entre les mots pour que les variables désignées est d'avantage de clarté ou signification j'imagine.

Mammouth du PHP | 1967 Messages

14 janv. 2019, 11:30

En effet, et par convention l'utilisation de majuscule indique qu'il s'agit d'une constante. et le _ en premier lieu qu'il s'agit d'une constante créer par le developpeur et non pas une constante défini dans PHP. mais ce sont des conventions, rien n'oblige de les suivre.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 39 Messages

14 janv. 2019, 11:36

Ha ok.Merci.
Je ne le savais pas bien sûr.
Je tâcherai de m'en souvenir.
Et pendant que nous y sommes sur les constates, elles se créent comme des variables?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

14 janv. 2019, 12:24

Et pendant que nous y sommes sur les constates, elles se créent comme des variables?
Avec la fonction define :
http://php.net/define
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 39 Messages

14 janv. 2019, 12:31

Ok merci.
En même temps avec vos explications sur cette fonctions, j'obtiens des réponses autres que celles que j'attendais.
Comme par exemple sur les constantes que j'ai déjà rencontré sans les connaître.
Merci encore.
La question est résolue dans son ensemble.