Pourquoi s’embêter avec le chargement automatique dans WordPress, partie 3
Dans le dernier article, j’ai dit que nous ne pouvions pas nous permettre le même luxe que les langages compilés et typés statiquement. Plus précisément, je parlais de l’idée de ne pas avoir à traiter avec des chargeurs automatiques.
Au lieu de cela, les langages compilés peuvent prendre tous les fichiers qui composent le programme, les traiter et les regrouper en un seul binaire.
Mais pour ce faire, il a besoin d’un type spécifique de programme pour le faire.
Chargement automatique dans WordPress: Linkers et Autoloaders
C’est-à-dire qu’il utilise un utilitaire appelé un éditeur de liens. Je couvrirai cela brièvement momentanément, mais voir le rôle qu’il joue dans le contexte des langages compilés peut aider à établir une analogie avec le fonctionnement du chargement automatique dans WordPress (et PHP).
Qu’est-ce qu’un Linker ?
Selon le langage avec lequel vous travaillez, en particulier avec les langages de programmation orientés objet, il est probable que le code soit réparti sur plusieurs fichiers.
De plus, chacun de ces fichiers va être regroupé dans leurs packages (nous les appelons espaces de noms PHP, et la plupart des langages compilés font de même). Ainsi, à des fins de démonstration, supposons que les fichiers sont inclus dans leurs espaces de noms.
Ensuite, dans toute la base de code, vous avez tous ces fichiers qui sont liés via des espaces de noms mais répartis dans des fichiers séparés.
Quand vient le temps de compiler tout cela en un seul binaire exécutable, un programme appelé un éditeur de liens analyse le code et le fait par magie pour aider à créer un seul binaire exécutable (par opposition à une collection de fichiers comme nous avons l’habitude de voir dans projets basés sur PHP).
Et le chargement automatique ?
Alors, quelles sont les similitudes entre le chargement automatique et la liaison ? Comme mentionné, les projets que nous construisons dans WordPress (et PHP) résident systématiquement dans des fichiers séparés. Autrement dit, ils ne seront jamais compilés dans un seul fichier.
Je dirais qu’il était une fois (bien que cela arrive toujours), nous utilisons include_once ou require_once pour apporter toutes les dépendances dont nous avons besoin. Mais le chargement automatique élimine la nécessité de le faire.
Écrire manuellement un chargeur automatique (sans utiliser PSR4).
Au lieu de cela, un chargeur automatique peut prendre le code que nous avons chaque fois que nous instancions une classe, puis chargeons automatiquement (d’où son nom) le fichier sans avoir besoin d’inclure manuellement le fichier.
L’analogie
Alors qu’un éditeur de liens analysera la base de code d’un programme et assemblera automatiquement le binaire, un chargeur automatique aura besoin d’un certain type de configuration pour lui faire savoir où se trouvent les classes, comment localiser un fichier sur le système de fichiers en fonction de son espace de noms et de son nom de classe, et bientôt.
De plus, cela peut être fait de différentes manières selon que vous choisissez d’utiliser quelque chose comme PSR-4 ou une autre stratégie de chargement. Mais cela dépasse le cadre de cet article.
C’est ça
L’idée derrière tout cela est de comprendre comment les langages typés statiquement, qui sont souvent – mais pas toujours – des langages compilés et comment typés dynamiquement – qui ne sont souvent pas compilés (pensez JavaScript, PHP, etc.) – peuvent fonctionner de manière similaire, bien que différentes façons.
Bref:
- les langages compilés utilisent des linkers,
- les langages dynamiques utilisent des chargeurs automatiques.
Et c’est tout ce qu’il y a à faire, vraiment.
mais pourquoi est-ce important? Pour comprendre les avantages du chargement automatique dans WordPress et avoir une base pour des sujets plus avancés, je trouve qu’il est important de comprendre comment et pourquoi nous faisons certaines choses que nous faisons.
Et si rien d’autre, cela peut nous aider à être de meilleurs développeurs.
