Lecture/écriture d'un fichier retournant un tableau

Petit nouveau ! | 7 Messages

30 nov. 2017, 20:43

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 ?

Mammouth du PHP | 1967 Messages

01 déc. 2017, 09:27

Comment écris tu dans ce fichier ? avec un script ? alors montre le nous
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 7 Messages

01 déc. 2017, 09:47

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

Mammouth du PHP | 1967 Messages

01 déc. 2017, 12:41

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
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 7 Messages

01 déc. 2017, 12:43

À 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

Mammouth du PHP | 1967 Messages

01 déc. 2017, 16:54

si php interpréte comme une chaine c'est a cause des '' qui me semble pouvoir venir que de l'écriture
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 7 Messages

01 déc. 2017, 16:57

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.

Mammouth du PHP | 1967 Messages

04 déc. 2017, 12:09

je pense que cela dépasse mes compètences. Désolé de ne pas pouvoir aider
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube