Salut,
Je n’avais pas trop pris le temps de relire ton tuto jusque là alors je viens de le faire, pour ce qui est de la première partie en tout cas.
J’ai vu quelques fautes de frappe ou d’orthographe mais ne les ai pas relevées, de même que j’ai vu quelques erreurs dans certains exemples, j’imagine qu’une passe est prévue dessus.
Le cours m’a l’air prometteur et encore une fois je trouve intéressant de commencer par utiliser PHP dans son environnement le plus simple possible. ![:)](/static/smileys/svg/smile.svg)
Je vais donc prendre les chapitres dans l’ordre pour te donner les remarques que je me suis faites lors de la lecture.
C’est quoi PHP ? Qu’est-ce qu’un langage de programmation ?
Tu dis qu’à l’époque où PHP est né, « les pages » n’étaient faites que de HTML.
Je pense qu’il serait bon de recontextualiser et de dire que l’on parle bien de pages web (ce n’est pas évident si on ne connaît pas déjà le terme HTML).
Installation de l’environnement de travail
Par rapport à l’installation sous Linux, tu fais une note pour dire que les gestionnaire de paquets peut varier selon la distribution.
Cette note gagnerait à être donnée plus tôt car l’installation qui précède n’est en effet valable que pour Debian / Ubuntu.
Dans ta configuration, la ligne Loaded Configuration File: /etc/php/7.4/cli/php.ini
n’est pas à jour avec l’extrait de code qui précède.
Tu parles de « timezone » sans plus de précisions, le terme n’est pas clair pour tout le monde.
Peut-être devrais-tu parler plutôt de fuseau horaire, et d’expliquer en quoi il est important de le configurer ?
Lors de la création du premier programme PHP tu demandes à créer un fichier vide dans le dossier, je n’ai pas compris à quoi servait ce fichier puisque ce n’est semble-t-il pas celui qui contiendra le code.
Les variables et opérations
La phrase d’introduction, « Une variable c’est simplement quelque chose qui contient autre chose », est très floue, tu devrais utiliser des termes plus précis que « chose » (« identifiant », « nom », « valeur » ?).
Tu précises que « les autres langages ne supportent pas les accents », tu devrais plutôt dire que tous les autres ne les supportent pas, PHP n’est pas le seul dans le domaine.
Par rapport à ta phrase sur le typage (« nous ne définissons pas explicitement le type des variables (on dit qu’il est faiblement typé) »), les deux propositions ne sont pas tellement équivalentes.
Si on prend l’exemple de Rust, c’est un langage fortement typé qui ne demande pas à définir explicitement le type des variables car il procède par inférence.
À l’inverse, C est faiblement typé mais demande à ce que les types des variables soient explicites.
C’est plutôt le fait que PHP ait un typage dynamique (il type les valeurs plutôt que les variables) qui implique ici qu’il n’y ait pas besoin de préciser les types.
Je n’ai pas compris la phrase « On a donc tout simplement une variable ordonnée avec deux éléments: clé et valeur. » et je la trouve bizarre : pourquoi le tableau aurait deux éléments si l’on n’a mis qu’une valeur dedans ? Et qu’est-ce qui est ordonné ?
Aussi je me demande s’il n’est pas encore un peu tôt dans le cours pour présenter les tableaux.
Globalement je trouve que tu vas un peu vite sur certains points.
Pour ce qui est de « les clés ne sont pas limitées aux clés », j’imagine que tu voulais dire qu’elles ne se limitent pas aux nombres entiers.
Après un exemple, tu dis aussi qu’il n’est pas très explicite d’utiliser des nombres comme clés dans le code qui précède, je me questionne alors sur la pertinence de cet exemple.
À plusieurs reprises j’ai l’impression que tu as essayé de tordre certains cas d’utilisation pour qu’ils collent avec ce que tu voulais montrer, mais que ça fait des structures de données pas du tout naturelles.
Les structures de contrôles
Sur les opérateurs <
et <=
, tu présentes toujours les résultats d’opérations entre nombres différents. Je pense que tu devrais ajouter un exemple avec deux nombres égaux pour bien montrer la différence entre les deux opérateurs.
Les tables logiques de tes opérations booléennes n’ont que 3 lignes, il y manque la ligne true | false
.
La présentation de ces opérateurs est assez brève, et les exemples éloignés de la réalité.
Je ne comprends pas ce que présente la partie « Les booléens et les autres types » : le titre me fait penser que ça va parler d’utiliser &&
sur des nombres par exemple, alors qu’il s’agit de montrer == false
.
À part si ton clavier est inversé, je pense que la touche tabulation est tout à gauche de ton clavier plutôt qu’à droite. ![^^](/static/smileys/svg/hihi.svg)
Tu indiques vouloir lister les nombres de 1 à 9999, mais en réalité tes exemples commencent à 0.
Qu’est-ce que tu veux dire en parlant de « boucle un peu custom » ? Je ne comprends pas le terme utilisé dans ce contexte.
Est-ce que tu ne ferais pas par endroits une confusion entre instructions et expressions, notamment dans le cas de la syntaxe des boucles for
où tu parles de $i = $i + 1
comme d’une expression ?
Tes exemples d’itération avec les boucles while
/ for
sont erronés, tu prends $ingredientsCookies[0]
à chaque itération.
Tu utilises declare(strict_types=1);
dans la correction de l’exercice sans expliquer ce que ça fait (c’est présenté au chapitre suivant si je ne me trompe pas).
Les fonctions
Je trouve qu’il est un peu tôt pour parler des types de paramètres / de retour et des types « optionnels » (?int
), est-ce que ça n’alourdit pas la syntaxe pour le débutant qui lirait le cours ?
De même pour parler de l’utilisation de static
dans les fonctions.
Au cours de la présentation de la fonction require
, tu utilises en fait require_once
dans les exemples.
« mais vous trouverez des cas où ça peut tout de même être pratique » : il faudrait que le cours présente de tels cas. De manière générale je trouve qu’il manque quelques cas pratiques.
Aussi tu utilises la fonction isset
sans l’avoir présentée, il n’est pas évident de comprendre ce qu’elle fait.
C’est un chapitre que j’ai trouvé un peu fouillis, tu commences par présenter certaines fonctions, puis tu expliques comment définir une fonction, tu en présentes d’autres à nouveau, etc.
Lire et écrire des fichiers
Tu cites file_get_contents
à la place de file_put_contents
dans le paragraphe qui concerne cette dernières.
Aussi tu confonds les modes r
et w
dans ton tableau.
Le tableau ne dit d’ailleurs pas quels modes permettent de lire les fichiers.
Au niveau des droits de fichiers, tu présentes 777 comme un nombre décimal.
Il est plutôt à considérer comme nombre octal, 7778 étant égal à 1111111112 où l’on retrouve bien les différents droits. Ça donnerait le nombre 511 en décimal.
Super TP: re-créons snake !
Je pense que le snake est un sujet difficile pour un TP aussi tôt dans le cours, peut-être faudrait-il y aller pas à pas ?
Mais c’est une bonne idée de fournir une bibliothèque minimale pour gérer les interactions.
Je trouve que la phrase « des questions correspondant aux choses que je répète et m’efforce à rendre simple seront moins bien reçues sur le forum » est un peu rude, elle aurait tendance à contrarier/renfermer le lecteur je pense.
Enfin je ne comprends pas l’intérêt de la « solution simple » à l’exercice sur les bordures du jeu.
Voilà c’est tout pour moi.
Beau travail jusque là, et bonne continuation pour la suite ! ![:p](/static/smileys/svg/langue.svg)