Conseil Deprecated: trim(): Passing null

Eléphanteau du PHP | 18 Messages

04 mars 2023, 16:09

Bonjour

Sur

Code : Tout sélectionner

$code=trim($code);
J’ai une erreur :

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in

J’ai 2 façons de corriger

Code : Tout sélectionner

$code=trim((string)$code); $code=trim($code ?? '');
Egalement pour

Code : Tout sélectionner

$expediteur=htmlspecialchars(expediteur);
J’ai une erreur :

Deprecated: htmlspecialchars Passing null to parameter #1 ($string) of type string is deprecated in

Et également 2 façons de corriger

Code : Tout sélectionner

$envoi=htmlspecialchars((string)$envoi); $envoi=htmlspecialchars($envoi ?? '');
Question : laquelle de ces 2 solutions ((s’il y a que ces 2) est à utiliser ? et pourquoi

Merci par avance pour vos réponses

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

04 mars 2023, 16:45

Probablement, aucune des deux. :-D

Tu ne devrais pas avoir de cas où tu essaies d'appliquer trim() ou htmlspecialchars() sur une variable qui n'a pas été précédemment initialisée.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 18 Messages

04 mars 2023, 16:58

Merci pour votre réponse

C'est lors du passage de PHP 8.0 à 8.1 que cette erreur est apparue.

Les variables sont déclarées en amont, dans le cas présent

Code : Tout sélectionner

$code="";

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

04 mars 2023, 17:05

Si tu fais un var_dump($code) juste avant d'utiliser trim(), il te répond quoi ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 18 Messages

04 mars 2023, 17:13

Il répond: NULL

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

04 mars 2023, 17:21

Du coup c'est bien que ta variable n'est pas initialisée.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 18 Messages

04 mars 2023, 17:29

Code : Tout sélectionner

$code =(!empty($_POST['code']))? $_POST['code'] : Null; $code=trim($code);
Que veut tu dire par initialisée

Eléphanteau du PHP | 18 Messages

04 mars 2023, 17:50

Je pense avoir corrigé
j'ai changé cela

Code : Tout sélectionner

$code =(!empty($_POST['code']))? $_POST['code'] : Null;
En cela

Code : Tout sélectionner

en $code =(!empty($_POST['code']))? $_POST['code'] : '';

Et il n'y a plus d'erreur.

Suis-je dans le vrai

Mammouth du PHP | 2703 Messages

04 mars 2023, 20:56

il y a vraiment un cas où le formulaire n'est pas soumis en method post et qu'il faut quand même faire le traitement ?

Avatar du membre
Mammouth du PHP | 1564 Messages

05 mars 2023, 01:39

PHP >= 7 :
$code = $_POST['code'] ?? '';

Eléphanteau du PHP | 18 Messages

14 mars 2023, 09:39

Bonjour

Désolé pour ce retard dans la réponse.

Afin de mieux comprendre

Or1 vous dites

« il y a vraiment un cas où le formulaire n'est pas soumis en method post et qu'il faut quand même faire le traitement ? »

Cela veut dire que même si la variable n’est dans un poste je suis obligé de faire

$xxxx =(!empty($_POST['xxxx']))? $_POST['xxxx'] : ‘’;


Two 3d vous dites

PHP >= 7 :
$code = $_POST['code'] ?? '';

Vous voulez dire qu’il faut utiliser

$xxxx = $_POST['xxxx'] ?? '';

Et d’une manière générale>> ?? ‘’ lorsque cela est autorisé ?

Merci pour vos réponse

Mammouth du PHP | 2703 Messages

14 mars 2023, 09:48

Or1 vous dites

« il y a vraiment un cas où le formulaire n'est pas soumis en method post et qu'il faut quand même faire le traitement ? »

Cela veut dire que même si la variable n’est dans un poste je suis obligé de faire

$xxxx =(!empty($_POST['xxxx']))? $_POST['xxxx'] : ‘’;
ce qui ne répond pas à ma question un peu hors-sujet il est vrai.

Avatar du membre
Mammouth du PHP | 1564 Messages

14 mars 2023, 10:22


Eléphanteau du PHP | 18 Messages

19 mars 2023, 22:18

C'est parfait .

Merci