Рубрики
Uncategorized

Библиотека расширений PHP SPL проста в использовании

Автор оригинала: David Wong.

1. __автоматическая загрузка

Это функция автоматической загрузки, которая запускается в PHP5, когда мы создаем экземпляр неопределенного класса. См. Следующий пример:

./myClass.php

./index.php

Из вышесказанного видно, что существует два файла. В index.php ниже приведен новый класс MyClass, но очевидно, что этот файл не существует. Теперь он автоматически вызовет функцию автоматической загрузки и напрямую передаст строку имени класса “MyClass” в функцию автоматической загрузки в качестве параметра. В это время функция автоматической загрузки может импортировать файл внутри, а затем инициализировать класс в обычном режиме. Эта функция была удалена после PHP 7.2.0.

2. spl_autoload_регистр

SPL ﹣ autoload ﹣ register может автоматически регистрировать функцию, то есть, когда в файле PHP открывается доступ к несуществующему классу, он автоматически вызовет функцию, а затем выполнит функцию внутри функции, которая выглядит как Автоматическая загрузка работает так же. Но на самом деле функция регистра автоматической загрузки SPL более мощная, Параметр автоматической загрузки-это просто имя функции, которое исправлено. Это может быть объявлено только один раз. После использования автоматической загрузки функция не может быть использована повторно.

Пожалуйста, обратите внимание: в проекте может быть только одна загрузка. Если во время выполнения PHP возникнут две загрузки, об ошибке будет сообщено напрямую.

Очевидно, что Автоматическая загрузка не может соответствовать требованиям, поэтому существует расширение SPL. Регистр автоматической загрузки SPL принимает имена функций, замыкания или массивы в качестве параметров. В закрытии вы можете импортировать соответствующие файлы. И регистр автоматической загрузки SPL может зарегистрировать очередь автоматической загрузки, которая регистрируется первой и вызывается первой.

parameter 
autoload_function
欲注册的自动装载函数。如果没有提供任何parameter,则自动注册 autoload 的默认实现函数spl_autoload()。
throw
此parameter设置了 autoload_function 无法成功注册时, spl_autoload_register()是否抛出异常。
prepend
If true, SPL autoload register() adds a function to the top of the queue, not the end of the queue.

Его можно использовать в сочетании с require один раз. Такие как:

function_1(){
     $clsName = str_replace("\",DIRECTORY_SEPARATOR, $class_name);
    if (is_file(__DIR__.DIRECTORY_SEPARATOR."src".DIRECTORY_SEPARATOR.$clsName . '.php')) {
        //There is a class named testclass? 1 inside the file
        require_once(__DIR__.DIRECTORY_SEPARATOR."src".DIRECTORY_SEPARATOR.$clsName.'.php'); 
    }
}
function_2(){
     $clsName = str_replace("\",DIRECTORY_SEPARATOR, $class_name);
    if (is_file(__DIR__.DIRECTORY_SEPARATOR."Module".DIRECTORY_SEPARATOR.$clsName . '.php')) {
        //There is a class named testclass? 2 inside the file
        require_once(__DIR__.DIRECTORY_SEPARATOR."Module".DIRECTORY_SEPARATOR.$clsName.'.php');
    }
}
spl_autoload_register('function_1');
spl_autoload_register('function_2');
$obj = new testclass? 2(); // Currently, there is no testclass? 2, so function? 1 is called automatically, and the file is imported. However, there is no testclass? 2 in the imported file, so function? 2 is called automatically, and the file is imported. At this time, initialization is normal

3. Связанные с этим другие функции SPL

3.1 spl_autoload_call

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

3.2 функции spl_autoload_functions

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

3.3 расширения spl_autoload_

Зарегистрируйте и верните расширение файла по умолчанию, используемое функцией автоматической загрузки SPL, но этот интерфейс и функция автоматической загрузки SPL бесполезны. Автоматическая загрузка SPL-это реализация автоматической загрузки по умолчанию, что означает, что автоматическая загрузка SPL снова инкапсулирует автоматическую загрузку. По умолчанию эта функция сначала преобразует имя класса в нижний регистр, а затем добавляет. Inc или. Расширение PHP для имени класса в нижнем регистре в качестве имени файла, а затем проверяет, существует ли файл во всех путях включения.

_Функция _Autoload используется для обработки функции автоматической загрузки. Когда PHP не может найти указанный класс, он вызовет класс автоматической загрузки, чтобы загрузить требуемый класс. __Autoload-это всего лишь абстрактное определение. Реализация (реализация заключается в определении способа загрузки, правил загрузки, загружаемых файлов и т. Д.) Предоставляется пользователю. Spl_autoload-это реализация автоматической загрузки, определенная SPL. Правило загрузки, реализуемое функцией SPL ﹣ autoload, состоит в том, чтобы найти правильный класс в путях включения. Автоматическая загрузка SPL выполняется в соответствии с правилом загрузки psr-0, а включенные пути-это путь, который необходимо запрашивать при загрузке. Другие классы автоматической загрузки, которые вы реализовали, могут быть зарегистрированы через реестр автоматической загрузки SPL. После регистрации вы можете автоматически вызвать зарегистрированный метод для загрузки, когда вам понадобится класс. SPL ﹣ автозагрузка также является реализацией автоматической загрузки, и она также требуется для регистрации. Это только потому, что это внутренняя реализация по умолчанию, все

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

Поскольку PHP имеет только один метод автоматической загрузки, SPL autoload и регистр SPL autoload SPL должны конкурировать за этот метод, поэтому в реализации SPL на языке Си существует множество компромиссных методов. Если вы не используете регистр автоматической загрузки SPL для регистрации какой-либо пользовательской функции автоматической загрузки, метод автоматической загрузки PHP зависает в разделе Автоматическая загрузка SPL. После того, как регистр автоматической загрузки SPL зарегистрирует функцию автоматической загрузки, метод автоматической загрузки PHP зависает при вызове автоматической загрузки SPL, и автоматическая загрузка SPL станет опцией ожидания для входа в очередь автоматической загрузки SPL Для регистрации автоматической загрузки.