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

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

23

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

Если не читали, ничего страшного. Суть поста в том, что эти заявления делают:

  1. отладка сложнее,
  2. код трассировки сложнее сделать.

В конечном счете, это то, чего мы можем избежать. Я закончил пост следующим:

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

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

Автозагрузка в WordPress: типы языков

Когда дело доходит до языков программирования, их можно разделить на два различных типа языков:

  1. статически типизированный
  2. динамически типизированный

Их тоже легко заметить.

Статически типизированные языки

Язык со статической типизацией означает, что когда вы объявляете переменную, такую ​​как строка, целое число или число с плавающей запятой, она поддерживает этот тип на протяжении всего своего существования.

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

Обычно он указывается как определенный тип при объявлении, например, string или int, и чаще всего встречается в компилируемых языках.

Языки с динамической типизацией

Языки с динамической типизацией, с другой стороны, имеют более плавные переменные, за неимением лучшего термина, по своей природе.

То есть вы можете сначала объявить его как строку, затем сравнить его с целым числом, а затем снова использовать его как строку.

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

Это может привести к странным побочным эффектам и ошибкам.

JavaScript такой. Чтобы увидеть пример, откройте консоль браузера и введите что-то вроде того, что вы видите на следующем снимке экрана (и обратите внимание на результат):

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

Второй случай является точным (и именно поэтому почти всегда следует использовать тройное равенство).

Кроме того, то, как что-то может работать на одном языке, не может работать на другом языке.

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

Какое это имеет отношение к автозагрузке?

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

Цель поднятия вышеупомянутых тем — показать роль, которую играют интерпретаторы и компиляторы при работе с кодом на динамических языках.

И это важно, потому что PHP — динамический язык.

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

Итак, окончательный вывод из этого поста, если бы мне пришлось обобщать его, таков:

Языки с динамической типизацией, такие как PHP, не могут позволить себе такую ​​роскошь, как компилируемые языки, в которых все скомпилировано в один двоичный файл. Мы должны каким-то образом сообщить программе, где существуют зависимости в контексте более крупной программы.

И об этом я постараюсь рассказать в следующем посте.

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

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