Top Code 2024, les challenges sont de nouveau disponibles dans les boards pour les participant(e)s => Boards

Sandbox PHP locale 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, dans lequel on peut faire ce qu’on veut, sans aucun risque. Un véritable espace d’expérimentation.

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 et contrôler tes résultats pour suivre ta progression
  • 2 librairies de tests sont installées : PHPUnit et PEST pour pouvoir t’entraîner à réaliser des tests unitaires

Installation en vidéo

Tu peux suivre cette vidéo qui te montrera comment installer la sandbox en quelques minutes, et comment réaliser un challenge au travers de l’API pour suivre ta progression sur Tainix :

Pas à pas

Ces étapes sont les mêmes que celles présentées dans la vidéo.

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.4

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

Edit : Cette étape est désormais obligatoire pour récupérer correctement la liste des challenges disponibles.

Avec l’API, tu accèdes à des jeux de données + complexes et tu suis 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.

Je vois des challenges dans un Board, mais je ne les vois pas dans la sandbox ?

Assure toi d’avoir bien paramétré ta clé personnelle dans le fichier .env puis clique à nouveau sur « Charger les challenges ». Si le board n’est pas encore démarré, c’est normal que les challenges n’apparaissent pas.

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. Pour s’assurer que ta sandbox est à jour, tu peux réaliser la commande depuis la racine :

git pull

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.

Il y a aussi une track dédiée aux tests unitaires en PHP.

Enfin, il y a désormais une branche dédiée aux corrigés avec des tests unitaires.

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.