Varför bry sig om automatisk laddning i WordPress, del 3
I förra inlägget sa jag att vi inte hade råd med några av samma lyx som statiskt skrivna, sammanställda språk har. Specifikt talade jag om idén att inte behöva hantera autoloaders.
Istället kan kompilerade språk ta alla filer som utgör programmet, bearbeta dem och bunta ihop dem till en enda binär.
Men för att göra det behöver det en specifik typ av program för att göra det.
Autoloading i WordPress: Länkare och Autoloaders
Det vill säga att den använder ett verktyg som kallas länk. Jag kommer att täcka det kort för en stund, men att se vilken roll det spelar i sammanhanget med kompilerade språk kan hjälpa till att dra en analogi med hur autoladdning i WordPress (och PHP) fungerar.
Vad är en länkare?
Beroende på vilket språk du arbetar med, särskilt med objektorienterade programmeringsspråk, är det troligt att koden kommer att spridas över flera filer.
Vidare kommer var och en av dessa filer att paketeras i sina paket (vi hänvisar till dessa som namnutrymmen som PHP, och de flesta kompilerade språk gör detsamma också). Så, för demonstrationsändamål, anta att filerna ingår i deras namnrymder.
Sedan, genom hela kodbasen, har du alla dessa filer som är relaterade via namnutrymmen men spridda över separata filer.
När det är dags att kompilera allt detta till en enda, körbar binär, analyserar ett program som kallas länkar koden och gör det magiskt för att hjälpa till att skapa en enda, körbar binär (mot en samling filer som vi är vana vid att se i PHP-baserade projekt).
Och autoloading?
Så vad är likheterna mellan autoloading och länkning? Som nämnts ligger projekten som vi bygger i WordPress (och PHP) konsekvent i separata filer. Det vill säga, de kommer aldrig att kompileras till en fil.
Jag skulle säga en gång i tiden (även om detta fortfarande händer) använder vi include_once eller require_once för att få in alla beroenden som vi behöver. Men automatisk laddning förnekar behovet av att göra detta.
Skriva en autoloader manuellt (utan att använda PSR4).
Istället kan en autoloader ta koden som vi har när vi, till exempel, instansierar en klass och sedan automatiskt ladda (därav dess namn) filen utan att behöva inkludera filen manuellt.
Analogin
Medan en länkare kommer att analysera kodbasen för ett program och automatiskt sätta ihop binären, kommer en autoloader att behöva någon typ av konfiguration för att låta den veta var klasserna är, hur man lokaliserar en fil i filsystemet givet dess namnområde och klassnamn, och så vidare.
Vidare finns det olika sätt detta kan göras beroende på om du väljer att använda något som PSR-4 eller en annan laddningsstrategi. Men det ligger utanför ramen för detta inlägg.
Det är allt
Tanken bakom allt detta är att förstå hur statiskt typade språk, som ofta – men inte alltid – är kompilerade språk och hur dynamiskt typade – som ofta inte är kompilerade (tänk JavaScript, PHP, etc.) – kan fungera på liknande, om än olika sätt.
Kortfattat:
- kompilerade språk använder länkar,
- dynamiska språk använder autoloaders.
Och det är allt som finns, egentligen.
Men varför är detta viktigt? För att förstå fördelarna med automatisk laddning i WordPress och för att ha en grund för mer avancerade ämnen tycker jag att det är viktigt att förstå hur och varför vi gör vissa saker vi gör.
Och om inte annat kan det hjälpa oss att bli bättre utvecklare.
