2017 © Pedro PelΓ‘ez
 

library classloader

Extended Autoloader for Movephp framework

image

movephp/classloader

Extended Autoloader for Movephp framework

  • Sunday, November 26, 2017
  • by Alexey Sinkevich
  • Repository
  • 1 Watchers
  • 0 Stars
  • 9 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

Build Status Coverage Status, (*1)

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Autoloader для Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Movephp

Π­Ρ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для создания ΠΊΠ°Ρ€Ρ‚Ρ‹ классов прилоТСния. Он сканируСт ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π² поисках *.php Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ составляСт список всСх Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… классов (Π² Ρ‚.Ρ‡. абстрактных, Π° Ρ‚Π°ΠΊΠΆΠ΅ интСрфСйсов ΠΈ Ρ‚Ρ€Π΅ΠΉΡ‚ΠΎΠ²). Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСтся пространство ΠΈΠΌΡ‘Π½, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ интСрфСйсы ΠΈ Ρ‚Ρ€Π΅ΠΉΡ‚Ρ‹, классы-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ., (*2)

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ массив Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΈ для поиска ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠ°Ρ€Ρ‚Ρ‹ классов., (*3)

НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ всС классы, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Π² Π΄Π΅Ρ€Π΅Π²Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… классов ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ всС классы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ‚Ρ€Π΅ΠΉΡ‚ ΠΈ Ρ‚.Π΄., (*4)

Π­Ρ‚ΠΎ позволяСт быстро Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ прилоТСния ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ прСпроцСссинг., (*5)

ОглавлСниС

Установка

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ способ установки - с использованиСм Composer. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π² ваш composer.json Ρ„Π°ΠΉΠ»:, (*6)

"require": {
    "movephp/classloader": "~1.0"
}

Быстрый старт

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для быстрого старта:, (*7)

include_once('vendor/autoload.php');
use Movephp\ClassLoader\{Autoload, Map};
$autoload = new Autoload(
    new Map\Map()
);
$autoload->setScanPaths(__DIR__ . '/src', __DIR__ . '/vendor');
$autoload->makeMap();
var_dump($autoload->map()->classes());

Автозагрузчик

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ классов ΠΈΠ· составлСнной ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ $autoload->register()., (*8)

Для использования Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² качСствС Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° классов рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (PSR-6)., (*9)

$cachePool = new Symfony\Component\Cache\Adapter\FilesystemAdapter();
$autoload = new Autoload(
    new Map\Map(),
    $cachePool
);
$autoload->setScanPaths(__DIR__ . '/src', __DIR__ . '/vendor');
$autoload->makeMap();
$autoload->register();

ΠŸΡ€ΠΈ использовании ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°Ρ€Ρ‚Π° классов Π±ΡƒΠ΄Π΅Ρ‚ сформирована Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… обращСниях Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ быстро восстановлСны ΠΈΠ· кСша., (*10)

По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡ movephp_classloader для получСния CacheItem ΠΈΠ· ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ CachePool. Для прСдотвращСния Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π² конструктор класса Autoload ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ пространство ΠΈΠΌΡ‘Π½ для ΠΊΠ»ΡŽΡ‡Π° CacheItem: $autoload = new Autoload($map, $cachePool, 'mynamespace') - Π² этом случаС для получСния CacheItem Π±ΡƒΠ΄Π΅Ρ‚ использован ΠΊΠ»ΡŽΡ‡ mynamespace_movephp_classloader., (*11)

ОбновлСниС ΠΊΠ°Ρ€Ρ‚Ρ‹

Π’ dev-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ классов:, (*12)

$cachePool = new Symfony\Component\Cache\Adapter\FilesystemAdapter();
$autoload = new Autoload(
    new Map\Map(),
    $cachePool
);
$autoload->setScanPaths(__DIR__ . '/src', __DIR__ . '/vendor');
$autoload->makeMap();
if (...some_сondition_here...) {
    $autoload->updateMap();
}
$autoload->register();

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ, - ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ кСш ΠΈ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ Π·Π°Π½ΠΎΠ²ΠΎ:, (*13)

$cachePool = new Symfony\Component\Cache\Adapter\FilesystemAdapter();
if (...some_сondition_here...) {
    $cachePool->clear();
}
$autoload = new Autoload(
    new Map\Map(),
    $cachePool
);
$autoload->setScanPaths(__DIR__ . '/src', __DIR__ . '/vendor');
$autoload->makeMap();
$autoload->register();

Настройки сканирования

Помимо ΠΌΠ΅Ρ‚ΠΎΠ΄Π° $autoload->setScanPaths() для указания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹/ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ просканированы, сущСствуСт Π΄Π²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:, (*14)

  • $autoload->setExcludingPaths(string ...$excludePaths) - ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ (ΠΈ всё ΠΈΡ… содСрТимоС) ΠΈΠ· процСсса сканирования. Π˜ΠΌΠ΅Π΅Ρ‚ смысл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² с тСстами.
  • $autoload->setOverridePaths(string ...$overridePaths) - Π² случаС, Ссли ΠΏΡ€ΠΈ сканировании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ нСсколько классов с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ пространство ΠΈΠΌΡ‘Π½), Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка. Однако Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹/ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ классы, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹Π΅ классы Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… сканируСмых Ρ„Π°ΠΉΠ»Π°Ρ…. Π’ этом случаС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ошибки, Π° Π² ΠΊΠ°Ρ€Ρ‚Ρƒ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ классы ΠΈΠ· $overridePaths.

ΠžΡΠΎΠ±Ρ‹Π΅ случаи

Composer-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹

ΠŸΡ€ΠΈ сканировании Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Π°ΠΌ composer.json. ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Ссли ΠΎΠ½ содСрТит Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ autoload, ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹, описанныС Π² Π½Π΅ΠΉ., (*15)

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌ composer-ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹, Ρ‚.ΠΊ., вСроятно, Π½ΡƒΠΆΠ½Ρ‹ Ρ‚Π°ΠΌ лишь для тСстов ΠΈΠ»ΠΈ просто ΡΠ²Π»ΡΡŽΡ‚ΡΡ мусором., (*16)

PHPUnit ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Composer

Класс Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π² ΠΊΠ°Ρ€Ρ‚Ρƒ классов ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ доступСн ΠΊΠ°ΠΊ для Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΈ для Π°Π½Π°Π»ΠΈΠ·Π°, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях:, (*17)

  • Если класс являСтся тСстом phpUnit, Ρ‚.Π΅. Ссли ΠΎΠ½ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ унаслСдован ΠΎΡ‚ классов PHPUnit_Framework_TestCase ΠΈΠ»ΠΈ PHPUnit\Framework\TestCase;
  • Если класс являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Composer, Ρ‚.Π΅. ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Π² пространствС ΠΈΠΌΡ‘Π½ Composer ΠΈΠ»ΠΈ Π² любом подпространствС Composer\....

ΠšΠ»Π°ΡΡΡ‹ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ ошибками

Класс Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΠ°Ρ€Ρ‚Ρƒ классов, Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ доступСн для Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях:, (*18)

  • Если Π² ΠΊΠΎΠ΄Π΅ Ρ„Π°ΠΉΠ»Π° с классом встрСчаСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ exit() (ΠΈΠ»ΠΈ die()) Π²Π½Π΅ Ρ‚Π΅Π»Π° класса, Ρ‚.Π΅. ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»Π° ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ.
  • Если класс унаслСдован ΠΎΡ‚ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ прСдставлСн Π² ΠΎΠ±Ρ‰Π΅ΠΉ ΠΊΠ°Ρ€Ρ‚Π΅ классов ΠΈ Π½Π΅ являСтся встроСнным Π² PHP классом. Π’ΠΎΠΆΠ΅ касаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚Ρ€Π΅ΠΉΡ‚ΠΎΠ² ΠΈ интСрфСйсов.

Π’Π°ΠΊΠΎΠΉ класс ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΎΡΠΎΠ±ΡƒΡŽ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΡƒ $item->isSafeInclude() === false, которая ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° с Π΄Π°Π½Π½Ρ‹ΠΌ классом ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкС ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΌΡƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ скрипта. Однако класс Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠ°Ρ€Ρ‚Π΅ классов ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ доступСн для Π°Π½Π°Π»ΠΈΠ·Π°., (*19)

Поиск и анализ классов

Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ классов - ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Map\Map - ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ $autoload->map(). Π’Π°ΠΊΠΆΠ΅, Ссли Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сразу Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс Map\Map ΠΈ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ scan():, (*20)

$map = new Map\Map();
$map->scan([__DIR__ . '/src', __DIR__ . '/vendor']);

ΠœΠ΅Ρ‚ΠΎΠ΄ Map\Map::classes() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список всСх классов Π² ΠΊΠ°Ρ€Ρ‚Π΅ Π² Π²ΠΈΠ΄Π΅ массива ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Map\Item., (*21)

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Map\Map::find() ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ поиск срСди классов Π² ΠΊΠ°Ρ€Ρ‚Π΅ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ поиска нСабстрактных классов, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… интСрфСйс MyNamespace\MyInterface, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² этих классов:, (*22)

$map->find(Map\Item::TYPE_CLASS, MyNamespace\MyInterface::class);

ΠœΠ΅Ρ‚ΠΎΠ΄ find() Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Map\Item., (*23)

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Map\Item - элСмСнты ΠΊΠ°Ρ€Ρ‚Ρ‹ - ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²-Π³Π΅Ρ‚Ρ‚Π΅Ρ€ΠΎΠ² для получСния всСвозмоТной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ прСдставляСмом ΠΈΠΌΠΈ классС., (*24)

API Reference

Movephp\ClassLoader\Autoload

Основной класс Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° Π½Π° основС ΠΊΠ°Ρ€Ρ‚Ρ‹ классов, Π° Ρ‚Π°ΠΊΠΆΠ΅ для управлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈ Π΅Π³ΠΎ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ., (*25)

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

__construct(Movephp\ClassLoader\Map\MapInterface $cleanMap, Psr\Cache\CacheItemPoolInterface $cachePool = null, string $cacheKeyNamespace = '')
АргумСнт Π’ΠΈΠΏ По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ОписаниС
$cleanMap Movephp\ClassLoader\Map\MapInterface DI для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠ°Ρ€Ρ‚Ρ‹.
$cachePool Psr\Cache\CacheItemPoolInterface null ΠžΠ±ΡŠΠ΅ΠΊΡ‚ кСша для ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°Ρ€Ρ‚Ρ‹. ΠšΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ выполняСтся, Ссли этот Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ Π·Π°Π΄Π°Π½.
$cacheKeyNamespace string ΠŸΡƒΡΡ‚Π°Ρ строка ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½ для ΠΊΠ»ΡŽΡ‡Π° элСмСнта кСша.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

ΠœΠ΅Ρ‚ΠΎΠ΄ ОписаниС
setScanPaths(string ...$scanPaths): void УстанавливаСт ΠΏΡƒΡ‚ΠΈ ΠΊ сканируСмым ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌ. Π’Ρ‹Π·ΠΎΠ² этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° обязатСлСн Π΄ΠΎ выполнСния сканирования.
setExcludingPaths(string ...$excludePaths): void Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹ ΠΏΡ€ΠΈ сканировании. ΠœΠ΅Ρ‚ΠΎΠ΄ слСдуСт Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎ выполнСния сканирования.
setOverridePaths(string ...$overridePaths): void Π’ случаС обнаруТСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классов с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ пространство ΠΈΠΌΡ‘Π½), классы Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…/Ρ„Π°ΠΉΠ»Π°Ρ…, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² ΠΊΠ°Ρ€Ρ‚Ρƒ. Если ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² классов, Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания ΠΊΠ°Ρ€Ρ‚Ρ‹ классов Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Movephp\ClassLoader\Exception\ClassDuplicateException. ΠœΠ΅Ρ‚ΠΎΠ΄ слСдуСт Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎ выполнСния сканирования.
makeMap(): void ΠŸΡ‹Ρ‚Π°Π΅Ρ‚ΡΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°Ρ€Ρ‚Ρ‹ классов ΠΈΠ· кСша ΠΈ, Π² случаС Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ, выполняСт сканированиС Ρ„Π°ΠΉΠ»ΠΎΠ², создаёт Π½ΠΎΠ²ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ ΠΈ сохраняСт Π΅Ρ‘ Π² кСш.
updateMap(): void Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ обновляСт ΠΊΠ°Ρ€Ρ‚Ρƒ, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΡƒΡŽ ΠΈΠ· кСша ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ makeMap(). Π’Π°ΠΊΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ выполняСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС, Ρ‡Π΅ΠΌ составлСниС ΠΊΠ°Ρ€Ρ‚Ρ‹ с нуля. Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΊΠ°Ρ€Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создана/ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π·Π° ΠΎΠ΄ΠΈΠ½ запуск скрипта, поэтому ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ измСнят. Если ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта.
map(): Map\MapInterface Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°Ρ€Ρ‚Ρ‹ классов. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ makeMap() Π½Π΅ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ выполнится автоматичСски.
isClassExists(string $className, Map\ItemInterface &$item = null): bool По ΠΈΠΌΠ΅Π½ΠΈ класса (fully qualified) опрСдСляСт, имССтся Π»ΠΈ ΠΎΠ½ Π² ΠΊΠ°Ρ€Ρ‚Π΅ классов. Если ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Π² Π½Π΅Π³ΠΎ ΠΏΠΎ ссылкС записываСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт ΠΊΠ°Ρ€Ρ‚Ρ‹ (Ссли класс Π½Π°ΠΉΠ΄Π΅Π½ Π² ΠΊΠ°Ρ€Ρ‚Π΅). Если ΠΌΠ΅Ρ‚ΠΎΠ΄ makeMap() Π½Π΅ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ выполнится автоматичСски.
load(string $className): void Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Ρ„Π°ΠΉΠ» с классом с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ include_once(), Ссли ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ класс сущСствуСт Π² ΠΊΠ°Ρ€Ρ‚Π΅ ΠΈ Ссли ΠΎΠ½ бСзопасСн для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (см. описаниС Movephp\ClassLoader\Map\Item::isSafeInclude()).
isClassLoaded(string $className): bool ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, Π±Ρ‹Π» Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ класс Ρ€Π°Π½Π΅Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ load().
register(): void РСгистрируСт ΠΌΠ΅Ρ‚ΠΎΠ΄ load() Π² качСствС Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° классов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ spl_autoload_register(..., true, true).

Movephp\ClassLoader\Map\Map

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса прСдставляСт ΠΊΠ°Ρ€Ρ‚Ρƒ классов ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π΅Ρ‘ составлСния (сканирования Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°) ΠΈ поиска ΠΏΠΎ Π½Π΅ΠΉ., (*26)

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

__construct(string $itemClass = '')
АргумСнт Π’ΠΈΠΏ По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ОписаниС
$itemClass string ΠŸΡƒΡΡ‚Π°Ρ строка DI для указания ΠΈΠΌΠ΅Π½ΠΈ класса элСмСнта ΠΊΠ°Ρ€Ρ‚Ρ‹. Если Π½Π΅ Π·Π°Π΄Π°Π½, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ класс Movephp\ClassLoader\Map\Item. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π² основном, для тСстирования.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

ΠœΠ΅Ρ‚ΠΎΠ΄ ОписаниС
scan(array $scanPaths, array $excludePaths = [], array $overridePaths = []): int ВыполняСт сканированиС Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для формирования ΠΊΠ°Ρ€Ρ‚Ρ‹ классов. ВсС Ρ‚Ρ€ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° - массивы строк, ΠΏΠΎ смыслу ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² setScanPaths(), setExcludingPaths() ΠΈ setOverridePaths() класса Movephp\ClassLoader\Autoload. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° выполняСт ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ происходит быстрСС, Ρ‡Π΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΠ΅ сканированиС.
classes(): array Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список всСх Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… Π² ΠΊΠ°Ρ€Ρ‚Ρƒ классов, Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ сканировании, Π² Π²ΠΈΠ΄Π΅ массива ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса Movephp\ClassLoader\Map\Item.
find(int $type = Movephp\ClassLoader\Map\ItemInterface::TYPE_ANY, string $parentClassName = '', bool $includableOnly = true): array ВыполняСт поиск срСди элСмСнтов ΠΊΠ°Ρ€Ρ‚Ρ‹ классов ΠΏΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ. $type - Ρ‚ΠΈΠΏ элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния см. Π½ΠΈΠΆΠ΅. $parentClassName - Ссли ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ класса с этим ΠΈΠΌΠ΅Π½Π΅ΠΌ. $includableOnly - Ссли false, Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ классы, нСбСзопасныС для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (см. Movephp\ClassLoader\Map\Item::isSafeInclude()).

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° $type ΠΌΠ΅Ρ‚ΠΎΠ΄Π° find(): - Movephp\ClassLoader\Map\ItemInterface::TYPE_CLASS - Movephp\ClassLoader\Map\ItemInterface::TYPE_ABSTRACT - Movephp\ClassLoader\Map\ItemInterface::TYPE_INTERFACE - Movephp\ClassLoader\Map\ItemInterface::TYPE_TRAIT - ΠΈΠ»ΠΈ любая сумма этих констант (Movephp\ClassLoader\Map\ItemInterface::TYPE_ANY - это сумма ΠΈΡ… всСх)., (*27)

Movephp\ClassLoader\Map\Item

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса прСдставляСт ΠΎΠ΄ΠΈΠ½ элСмСнт ΠΊΠ°Ρ€Ρ‚Ρ‹: класс, интСрфСйс ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅ΠΉΡ‚, Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ сканировании., (*28)

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

ΠœΠ΅Ρ‚ΠΎΠ΄ ОписаниС
getFilePath(): string ΠŸΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, Π³Π΄Π΅ объяслСн класс.
getType(): int Одна ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… констант: Movephp\ClassLoader\Map\ItemInterface::TYPE_CLASS, Movephp\ClassLoader\Map\ItemInterface::TYPE_ABSTRACT, Movephp\ClassLoader\Map\ItemInterface::TYPE_INTERFACE, Movephp\ClassLoader\Map\ItemInterface::TYPE_TRAIT
getNamespace(): string ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½ класса.
getName(): string Имя класса (fully qualified).
getImports(): array Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив строк - ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ классом пространства ΠΈΠΌΡ‘Π½.
getParent(): string Имя Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.
getInterfaces(): array Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив строк - ΠΈΠΌΠ΅Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… классом интСрфСйсов.
getTraits(): array Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив строк - ΠΈΠΌΠ΅Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… классом Ρ‚Ρ€Π΅ΠΉΡ‚ΠΎΠ².
getParents(): array Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив строк - полная Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… классов.
getInheritors(): array Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив строк - ΠΏΠΎΠ»Π½Ρ‹ΠΉ список всСх ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² ΠΈ Ρ‚.Π΄.)
isSafeInclude(): bool ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Ρ„Π°ΠΉΠ» с классом Π±Ρ‹Ρ‚ΡŒ бСзопасно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
isParsedJustNow(): bool Π‘Ρ‹Π» Π»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ класс ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ, Π² Ρ…ΠΎΠ΄Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ запуска приолТСния (false, Ссли класс Π±Ρ‹Π» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΠΈΠ· кСша).

TODO

  • Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ использованиС спСц. символов * ΠΈ ? ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ списка сканируСмых ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΈΠ· сканирования Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²;
  • Настройка Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ сканируСмых Ρ„Π°ΠΉΠ»ΠΎΠ² (ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ *.php);
  • Π˜Π·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ прямых ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ функциям Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Flysystem ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³).

The Versions

26/11 2017

dev-master

9999999-dev

Extended Autoloader for Movephp framework

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

26/11 2017

v1.0.2

1.0.2.0

Extended Autoloader for Movephp framework

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

31/10 2017

v1.0.0

1.0.0.0

Extended Autoloader for Movephp framework

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

31/10 2017

v1.0.1

1.0.1.0

Extended Autoloader for Movephp framework

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires