Sandbox PHP pour réaliser les challenges

Présentation et guide d’installation de notre sandbox PHP pour réaliser les challenges.

02/12/2021

Une sandbox PHP ?

« Sandbox » signifie bac à sable. En informatique, une « sandbox » représente alors un environnement de développement de tests, dans lequel on peut faire ce qu’on veut, sans aucun risque. Un véritable espace d’expérimentations.

On propose donc ici un moyen efficace de réaliser chacun de nos challenges, en local, de façon structurée.

Les avantages :

  • Tout est prêt pour que tu puisses réaliser chaque challenge
  • Un jeu de données test est automatiquement mis en place
  • La connexion à notre API est prête pour que tu puisses envoyer tes résultats et suivre ta progression
  • 2 librairies de tests sont installées : PHPUnit et PEST pour pouvoir t’entraîner à réaliser des tests unitaires

Installation

L’installation se déroule en 4 étapes. Pour que tout se passe bien, il faut que tu aies Git et Composer d’installés et accessibles en ligne de commande. Il faut que ta version de PHP soit >= 7.3

1. Cloner le repo depuis Github.

Crée un nouveau dossier dans ton environnement de développement local puis lance la commande :

git clone https://github.com/TainixCode/PHP-Sandbox.git tainix-php-sandbox

Le dossier qui contient le projet est nommé « tainix-php-sandbox » mais tu peux ajuster ce nom.

Place-toi ensuite dans le dossier :

cd tainix-php-sandbox

2. Installation des dépendances et préparation de l’autoload

composer install

3. Copie de la key personnelle

Cette étape est facultative mais nécessaire pour utiliser l’API.

Avec l’API, tu accèdes à des jeux de données + complexes et tu enregistres ta progression directement dans Tainix.

Pour cela, copie le fichier .env.default vers .env et colle ta key que tu peux récupérer dans ton compte.

4. Chargement des challenges

Ouvre le projet dans ton navigateur. Tu verras cette page s’afficher :

Il suffit de cliquer sur « Charger les challenges ».

Et voilà ! Tu es prêt(e) à coder ! Tu vas retrouver la liste des challenges disponibles :

Coder un challenge

Chaque challenge a un code, par exemple « GOT_1 », « SECURITY_1 », il faut alors se rendre dans le dossier /challenges/CODE_DU_CHALLENGE

2 fichiers sont présents :

code_du_challenge_local.php pour réaliser le challenge avec un jeu de données figé. La réponse attendue est fournie dans le fichier.

code_du_challenge_api.php pour réaliser le challenge avec l’API, et donc un jeu de données dynamique, issu directement de tainix.fr.

Tu peux ensuite visualiser le traitement de ton code en cliquant sur le bouton correspondant dans ton navigateur (cf. screenshot ci-dessus).

Tester un challenge

Les tests unitaires, c’est (très) important dans le développement. La sandbox te permet de tester le code que tu produiras dans le contexte d’un challenge (fonctions, classes, etc.) avec 2 frameworks :

PHPUnit

Le Framework de tests unitaires PHP le plus répandu. Les fichiers sont préparés dans le dossier /phpunit.

Pour tester un challenge, renomme le fichier pour enlever « .default » à la fin du fichier.

Les tests s’exécutent avec la commande :

./vendor/bin/phpunit

Tu peux aussi lancer les tests d’un seul challenge :

./vendor/bin/phpunit ./phpunit/CHALLENGE

Documentation de PHPUnit.

Pest

Le « petit » nouveau. Il s’agit d’une surcouche de PHPUnit qui propose une syntaxe d’écriture des tests que l’on peut qualifier de plus légère et mieux lisible. D’un point de vue possibilité technique, il y a peu de différences.

Les fichiers sont présents dans /pest. Il est nécessaire de lancer la commande suivante avant de démarrer les tests avec Pest :

./vendor/bin/pest --init

Les tests s’exécutent ensuite avec la commande :

./vendor/bin/pest --testsuite Pest

Documentation de Pest + un tuto en français.

Important, en lançant la commande :

./vendor/bin/pest

Tu lanceras à la fois les tests PHPUnit et Pest. Mais l’inverse n’est pas vrai ! Pest étant une surcouche de PHPUnit, il sait exécuter les tests de PHPUnit, mais PHPUnit ne sait pas exécuter les tests de Pest et va donc générer plein d’erreurs.

Pour bien organiser les tests, les dossiers /pest et /phpunit contiennent autant de dossiers qu’il y a de challenge, comme dans le dossier /challenges. De cette façon, tu peux tout à fait créer plusieurs fichiers de test pour un même challenge, et garder le tout bien organisé.

FAQ

Comment ajouter les nouveaux challenges ?

Lorsque de nouveaux challenges sont disponibles, clique à nouveau sur « Charger les challenges » et les nouveaux se rajouteront.

Est-ce que le code de la sandbox va évoluer ? Je devrais la mettre à jour ?

Son code peut encore évoluer, il y a quelques éléments qu’on peut optimiser dans son code, mais cela n’influera pas sur la façon de réaliser les challenges. Donc pas besoin particulièrement de la mettre à jour pour le moment.

Je ne connais rien aux tests unitaires, vous auriez des exemples ?

Oui ! On en a plein en stocks, ils seront diffusés dans le cadre des corrigés.

Et pour les autres langages ?

C’est en cours de développement pour javascript et python, inscris-toi à notre newsletter pour ne pas rater l’info 😉


Qui a codé ce superbe contenu ?


Ta newsletter chaque mois

Corrigés, challenges, actualités, veille technique... aucun spam.