ClassLoader - это библиотека PHP для классов автоматической загрузки. Автозазагрузка класса означает, что классы загружаются только тогда, когда они действительно необходимы вместо того, чтобы включать каждый файл класса в каждое выполнение. Это уменьшает страницу, загружающую накладные расходы, особенно на более крупных веб -сайтах, поскольку необходимо загрузить только некоторые из файлов класса. Обычно классы также динамически загружаются из файлов с именами файлов на основе пространства имен и имени класса. Это также облегчает управление большим количеством файлов класса.
Эта библиотека поддерживает два текущих стандартов для классов автозагрузки, а именно PSR-0 и PSR-4. Основная идея этих стандартов заключается в том, что файлы классов находятся в каталогах на основе их пространства имен и в файлах, названных в честь класса. Ключевое различие между этими двумя стандартами заключается в том, что PSR-4 не требует, чтобы все пространство имен присутствовало в иерархии каталога.
Однако, поскольку операция поиска фактических файлов классов имеет тенденцию быть относительно дорогой, эта библиотека также предоставляет базовые механизмы кэширования, которые позволяют кэшировать местоположение файлов класса в файле PHP. С кэшированием разница в производительности между автозагрузкой и загрузкой файлов вручную становится незначительной.
Документация API, которая может быть сгенерирована с использованием Apigen, может быть прочитана онлайн по адресу: http://kit.riimu.net/api/classloader/
Самый простой способ установить эту библиотеку - использовать композитор для обработки ваших зависимостей. Чтобы установить эту библиотеку через композитор, просто следуйте этим двум шагам:
Получите composer.phar , запустив установку командной строки Composer в корне проекта.
После того, как вы запустите сценарий установки, у вас должен быть файл composer.phar в вашем корне проекта, и вы можете запустить следующую команду:
php composer.phar require "riimu/kit-classloader:^4.4"
После установки этой библиотеки через композитор вы можете загрузить библиотеку, включив файл vendor/autoload.php , который был сгенерирован Composer во время установки.
Если вы уже знакомы с тем, как использовать композитор, вы можете альтернативно добавить библиотеку в качестве зависимости, добавив следующий файл composer.json в свой проект и запустив команду composer install :
{
"require" : {
"riimu/kit-classloader" : " ^4.4 "
}
} Если вы не хотите использовать композитор для загрузки библиотеки, вы также можете загрузить библиотеку вручную, загрузив последний выпуск и извлекая папку src в свой проект. Затем вы можете включить предоставленный файл src/autoload.php для загрузки классов библиотеки.
ClassLoader поддерживает автозагрузку, как определено стандартами PSR-0 и PSR-4 с помощью методов addBasePath() и addPrefixPath() соответственно. Вам не нужно понимать эти стандарты, чтобы использовать эту библиотеку, просто используйте метод, который лучше всего подходит для вас.
Автопожатие класса PSR-0 определяет, что файлы классов должны быть помещены в дерево каталогов, которое отражает их пространство имен. Например, класс 'foo bar baz' может быть расположен в файле '/path/to/classes/foo/bar/baz.php'. Этот метод, как правило, является самым простым способом размещения файлов вашего класса.
Используя метод addBasePath() , вы можете определить базовые каталоги, где искать классы. Чтобы загрузить упомянутый выше класс, вы можете использовать следующий код:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();Если конкретный каталог применяется только к конкретному пространству имен, вы также можете использовать второй параметр для определения пространства имен. Тем не менее, каталог все еще должен указывать на базовый каталог для пространства имен. Например:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();Обратите внимание, что PSR-0 также утверждает, что подчеркивается в имени класса рассматривается как сепараторы пространства имен (но не подчеркивает в пространствах имен). Таким образом, даже если ваш класс был назван «foo bar_baz», оба приведенных выше примера все равно будут работать. Даже если пространства имен ваших классов определяются с использованием подчеркиваний в имени класса, вам необходимо использовать Backslash в аргументе пространства имен.
В отличие от PSR-0, стандарт автозагрузки класса PSR-4 не требует размещения классов в дерево каталогов, которое отражает все их пространство имен. Вместо этого часть пространства имен может быть заменена определенным путем.
Например, если ваш класс 'foo bar baz' был расположен в файле '/path/to/library/baz.php', вы можете зарегистрировать путь, используя addPrefixPath() и указать пространство имен, как показано в следующем примере:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ( ' /path/to/Library/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz (); Это обеспечивает гораздо более короткие структуры каталогов, поскольку все пространство имен не нужно отражать в дереве каталогов. Также можно опустить аргумент пространства имен, и в этом случае путь будет работать так же, как пути, добавленные через addBasePath() , за исключением того, что подчеркивание в имени класса не будут рассматриваться как сепараторы пространства имен.
Хотя вы можете просто вызвать методы, добавляя методы несколько раз, можно добавить несколько путей, используя массив. Обычно это делает конфигурацию намного проще. Например, вы можете добавить несколько базовых путей, предоставив массив:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' /path/to/classes/ ' ,
' /other/path/ ' ,
]);
$ loader -> register ();Или вы можете добавить конкретные пути пространства имен, предоставив ассоциативный массив, который определяет пространства имен, используя клавиши массива:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' FooBar ' => ' /path/to/classes/ ' ,
' OtherNamesapace ' => [ ' /other/path/ ' , ' /some/other ' ],
]);
$ loader -> register ();Как показано в примере выше, вы также можете предоставить список путей для конкретного пространства имен.
Поиск занятий в файловой системе по каждому запросу является дорогостоящим делом. Настоятельно рекомендуется кэшировать местоположение файлов, чтобы их не нужно было искать по каждому запросу. В конце концов, файлы класса не имеют тенденции перемещаться в файловой системе.
Эта библиотека обеспечивает очень простую систему кэширования через FileCacheClassLoader . В классе хранится местоположения файлов в одном файле PHP, который загружается по каждому запросу вместо поиска файлов вручную.
Использование FileCacheClassLoader не сильно отличается от использования ClassLoader . Вам просто нужно предоставить путь к файлу кеша с записи в конструкторе. Файл будет использоваться для хранения местоположений класса и будет переписан при обнаружении новых файлов класса. Например:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader FileCacheClassLoader ( __DIR__ . ' /cache.php ' );
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();Эта библиотека является Copyright (C) 2012-2017 Riikka Kalliomäki.
Смотрите лицензию на лицензию и копирование информации.