Présentation et guide d’installation de notre sandbox PHP pour réaliser les challenges.
« 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 :
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 :
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 :
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).
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
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é.
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 😉