Page 1 sur 1

Lecture/écriture d'un fichier retournant un tableau

Posté : 30 nov. 2017, 20:43
par Rtransat
Bonjour,

J'ai une problèmatique que je n'arrive pas à résoudre. Je vous explique.

J'inclus un fichier retournant un tableau contenant quelque chose comme ça :

<?php
return [
    \Foo\Bar::class => \Foo\BarFactory::class,
    \Bar\Foo::class => \Bar\FooFactory::class,
];

Par la suite j'écris dans ce fichier d'autre ligne similaire mais le problème est que cela est interprété en chaîne de caractère car lors de l'ouverture les résolutions de classe (::class) sont interprétés et sont transformés en chaines. Ce qui fait que mon fichier final après écriture devient :

<?php
return [
    '\Foo\Bar' => '\Foo\BarFactory',
    '\Bar\Foo' => '\Bar\FooFactory',
];

Je voulais savoir si vous connaissez un moyen pour parer le problème en gardant l'inclusion du fichier ce qui me permet de manipuler le tableau facilement ?

Re: Lecture/écriture d'un fichier retournant un tableau

Posté : 01 déc. 2017, 09:27
par Spols
Comment écris tu dans ce fichier ? avec un script ? alors montre le nous

Re: Lecture/écriture d'un fichier retournant un tableau

Posté : 01 déc. 2017, 09:47
par Rtransat
En soit il n’y a pas grand chose à montrer.

Je fais un include du fichier je manipule mon tableau, j’ajoute des clés et valeurs. Je gère la creation du fichier avec zend-code qui ce charge de faire un file_put_contents via la classe FileGenerator

Voici en détails la classe qui permet de créer le tableau
https://github.com/zendframework/zend-c ... erator.php

Re: Lecture/écriture d'un fichier retournant un tableau

Posté : 01 déc. 2017, 12:41
par Spols
ca doit venir de zend alors la méthode n'est pas prévu pour l'ajout de class et comme il voit une chaine de caractère il lui ajoute des ''
Il faut trouver le bonne endroit du code de zend et réécrire la fonction en conséquence

Re: Lecture/écriture d'un fichier retournant un tableau

Posté : 01 déc. 2017, 12:43
par Rtransat
À l'écriture tout fonctionne bien, zend-code gère l'ajout de la résolution de class (::class), c'est lors de l'ouverture le problème.
PHP interprète la résolution de classe comme une chaîne, du coup mon tableau ne contient que des chaînes plutôt que ::class

Re: Lecture/écriture d'un fichier retournant un tableau

Posté : 01 déc. 2017, 16:54
par Spols
si php interpréte comme une chaine c'est a cause des '' qui me semble pouvoir venir que de l'écriture

Re: Lecture/écriture d'un fichier retournant un tableau

Posté : 01 déc. 2017, 16:57
par Rtransat
Malheureusement ça vient bien de la lecture.
Lors de l'inclusion d'un fichier, PHP l'exécute et du coup il transforme la résolution de classe en chaîne de caractère.
Il faudrait que je trouve une solution pour transformer la chaîne en résolution de classe.
Ou alors faire un parser pour gérer mon cas. Mais je préférais demander à la communauté avant, il doit y avoir un moyen plutôt simple que de développer un parser.

Re: Lecture/écriture d'un fichier retournant un tableau

Posté : 04 déc. 2017, 12:09
par Spols
je pense que cela dépasse mes compètences. Désolé de ne pas pouvoir aider