"resource" en paramètre d'une fonction ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : "resource" en paramètre d'une fonction ?

Re: "resource" en paramètre d'une fonction ?

par @rthur » 23 févr. 2019, 09:44

http://www.chezmoicamarche.fr/ :D

<?php
function ecriture($fichier, $contenu) { 
	fwrite($fichier, $contenu."\n");
}

$fich_imp = fopen('import.txt','a'); // j'ouvre mon fichier en mode APPEND, en le créant si nécessaire

ecriture($fich_imp,'Toto est content.'); // j'appelle la fonction ecriture() pour y insérer un contenu

fclose($fich_imp); // je ferme la ressource

"resource" en paramètre d'une fonction ?

par albat » 22 févr. 2019, 21:14

Bonjour,

Je souhaite insérer du contenu dans un fichier de format texte.
J'utilise pour cela la méthode "fopen / fwrite / fclose".

La particularité est que, si le fopen() et le fclose() se trouvent dans le script principal,
la fonction fwrite() se trouve, elle, dans une fonction que j'ai nommée ecriture().

Nous savons tous que la fonction fwrite() a besoin de deux paramètres :
- le flux du fichier (ici, $fich_imp) de type resource
- le contenu à insérer (ici, "Toto est content.") de type string

Apparemment, une variable de type resource ne peut pas être passée en paramètre d'une fonction
car la variable $fichier est considérée comme de type string.
De ce fait, la fonction fwrite() ne fonctionne pas.

Z'auriez pas des fois une solution pour que ça marche ?
Merci,

function ecriture($fichier, $contenu)
{ fwrite($fichier, $contenu."\n");
}

$fich_imp = fopen('/repertoire/import.txt','a'); // j'ouvre mon fichier en mode APPEND, en le créant si nécessaire
...
while ($toto=='happy')
      { ecriture($fich_imp,'Toto est content.'); // j'appelle la fonction ecriture() pour y insérer un contenu
      }
...
fclose($fich_imp);                               // je ferme la ressource

PS : je pourrais changer de méthode et me contenter d'utiliser la fonction file_put_contents(),
qui, elle, n'a pas besoin de resource en paramètre mais seulement du nom du fichier,
mais pour des raisons de performance et, surtout, d'appel récursif de la fonction ecriture(),
l'utilisation de fwrite() est de loin préférable.