Bonsoir
Hier et aujourd'hui, j'ai pris le temps de porter le vieux mais très chouette code Run-Php-Code (https://github.com/websiteduck/Run-PHP-Code/) sous la forme d'une image Docker.
De plus, j'ai ajouté un bouton "Refactor" qui permet d'améliorer le code PHP ayant été proposé. En effet, Refactor fait appel à phpcbf, php-cs-fixer et à Rector pour nettoyer la mise en page du code ainsi que de l'améliorer. Le code généré sera un code destiné pour s'exécuter sous PHP 7.4.26.
L'idée est d'avoir une page web avec une partie de gauche où l'on peut taper un code PHP. Dans la barre d'outils, il y a un bouton RUN pour exécuter le code (pour autant qu'il soit autonome càd ne nécessitant aucune dépendance) et un bouton "REFACTOR". L'exemple montré ci-dessous illustre cette fonction. J'ai écris un code avec une mise en page, disons-le, pourrie et on peut voir dans la partie de droite que cette mise-à-page a été corrigée mais, également, que le code PHP a été amélioré.
En effet, on peut aussi voir p.ex. la fonction setName() où le paramètre $name n'était pas typé et pourtant, dans la partie de droite, on voit que le paramètre l'est. Ceci parce que la propriété est bien définie comme string. Cette petite merveille est rendue possible grâce à Rector qui fait ça et bien plus.
Ci-dessous le code "pourri" :
Et le même après amélioration (refactoring) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php class Fruit { /** * @var string */ public $name=''; function setName($name) { $this->name = $name; } function getName() {return $this->name; }} $fruit = new Fruit();$fruit->setName('Apple'); sprintf("Your fruit is %s", $fruit->getName());
L'idée est donc double : avoir un bac-à-sable où il est aisé de vite/vite copier/coller un code PHP et de l'exécuter et d'avoir tout aussi facilement une fonction de nettoyage/amélioration du code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <?php class Fruit { /** * @var string */ public $name = ''; public function setName(string $name) { $this->name = $name; } /** * @return string */ public function getName() { return $this->name; } } $fruit = new Fruit(); $fruit->setName('Apple'); sprintf( 'Your fruit is %s', $fruit->getName() );
Le repository est disponible ici : https://github.com/cavo789/run_code
L'image Docker est ici : https://hub.docker.com/r/cavo789/runcode
Cette image est donc ultra-simple à utiliser :
- Il faut exécuter la commande docker pull cavo789/runcode:1.1 pour télécharger l'image (à faire une seule fois)
- Exécuter docker run --rm -p 88:80 -d --name runcode cavo789/runcode:1.1 pour créer une instance de l'image
- Se rendre à l'URL http://127.0.0.1:88 pour utiliser l'interface.
Bon amusement et bonne programmation.
Partager