✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Зачем беспокоиться об автозагрузке в WordPress, часть 3

33

В предыдущем посте я сказал, что мы не можем позволить себе некоторые из тех роскошей, которые есть у статически типизированных компилируемых языков. В частности, я говорил об идее не иметь дело с автозагрузчиками.

Вместо этого скомпилированные языки могут брать все файлы, из которых состоит программа, обрабатывать их и объединять в один двоичный файл.

Но для этого ему нужна программа определенного типа.

Автозагрузка в WordPress: линкеры и автозагрузчики

То есть он использует утилиту под названием компоновщик. Я кратко расскажу об этом на мгновение, но наблюдение за ролью, которую это играет в контексте компилируемых языков, может помочь провести аналогию с тем, как работает автозагрузка в WordPress (и PHP).

Что такое линкер?

В зависимости от языка, с которым вы работаете, особенно с объектно-ориентированными языками программирования, вполне вероятно, что код будет распределен по нескольким файлам.

Кроме того, каждый из этих файлов будет включен в свои пакеты (мы называем их пространствами имен как PHP, и большинство компилируемых языков делают то же самое). Итак, для демонстрационных целей предположим, что файлы включены в свои пространства имен.

Затем по всей кодовой базе у вас есть все эти файлы, которые связаны через пространства имен, но разбросаны по отдельным файлам.

Когда приходит время скомпилировать все это в один исполняемый двоичный файл, программа, называемая компоновщиком, анализирует код и работает с ним, помогая создать единый исполняемый двоичный файл (а не набор файлов, как мы привыкли видеть в PHP-проекты).

А автозагрузка?

Так в чем же сходство между автозагрузкой и связыванием? Как уже упоминалось, проекты, которые мы создаем в WordPress (и PHP), постоянно находятся в отдельных файлах. То есть они никогда не будут скомпилированы в один файл.

Я бы сказал, что когда-то (хотя это все еще происходит) мы использовали include_once или require_once, чтобы добавить все зависимости, которые нам нужны. Но автозагрузка сводит на нет необходимость этого делать.

Зачем беспокоиться об автозагрузке в WordPress, часть 3

Написание автозагрузчика вручную (без использования PSR4).

Вместо этого автозагрузчик может взять код, который у нас есть всякий раз, когда мы, скажем, создаем экземпляр класса, а затем автоматически загружать (отсюда и его название) файл без необходимости вручную включать файл.

Аналогия

В то время как компоновщик будет анализировать кодовую базу программы и автоматически собирать двоичный файл, автозагрузчику потребуется некоторая конфигурация, чтобы сообщить ему, где находятся классы, как найти файл в файловой системе, учитывая его пространство имен и имя класса, и скоро.

Кроме того, это можно сделать разными способами в зависимости от того, решите ли вы использовать что-то вроде PSR-4 или другую стратегию загрузки. Но это выходит за рамки данного поста.

Это оно

Идея, стоящая за всем этим, состоит в том, чтобы понять, как языки со статической типизацией, которые часто — хотя и не всегда — являются компилируемыми языками, и как языки с динамической типизацией — которые часто не компилируются (например, JavaScript, PHP и т. д.) — могут работать в похожих, хотя и различные пути.

Короче говоря:

  • скомпилированные языки используют компоновщики,
  • динамические языки используют автозагрузчики.

И это все, что нужно, на самом деле.

Но почему это важно? Чтобы понять преимущества автозагрузки в WordPress и иметь основу для более сложных тем, я считаю важным понимать, как и почему мы делаем определенные вещи, которые мы делаем.

И, по крайней мере, это может помочь нам стать лучшими разработчиками.

Источник записи: tommcfarlin.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее