microweber-packages / microweber-class-loader
Standalone instance-based class loader for Laravel. Directory and PSR-4 namespace autoloading with path deduplication. Reusable in any Laravel app.
Package info
github.com/microweber-packages/microweber-class-loader
pkg:composer/microweber-packages/microweber-class-loader
Requires
- php: ^8.1
- illuminate/http: ^10.0|^11.0|^12.0|^13.0
- illuminate/routing: ^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
- microweber-packages/microweber-package: *
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^3.0
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpunit/phpunit: ^10.0|^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
- microweber-packages/class-loader: *
This package is auto-updated.
Last update: 2026-11-03 17:06:08 UTC
README
Standalone instance-based class loader for Laravel applications.
Replaces the CMS-entangled static ClassLoader / SplClassLoader with a reusable service that:
- Avoids static state (no memory leaks between container cycles / tests)
- Registers a single
spl_autoloadcallback - Deduplicates paths that differ only by separator (
/vs\) or trailing slash - Supports flat directory lookup and PSR-4 namespace prefixes
Installation
composer require microweber-packages/microweber-class-loader
Register the provider (Microweber CMS does this via CoreServiceProvider):
// bootstrap/providers.php or AppServiceProvider::register() $app->register(\MicroweberPackages\ClassLoader\ClassLoaderServiceProvider::class);
Usage
use MicroweberPackages\ClassLoader\ClassLoaderService; $loader = app(ClassLoader::class); $loader->addDirectories([ base_path('modules'), __DIR__, ]); $loader->addNamespace('Acme\\Plugin', base_path('plugins/acme/src')); $loader->register(); // Path dedup: these count as one directory $loader->addDirectories('/var/www/app/'); $loader->addDirectories('/var/www/app'); $loader->addDirectories('\\var\\www\\app\\'); // same after normalize $loader->resolve('Acme\\Plugin\\Hello'); // path or null $loader->getStatistics(); $loader->clearCache(); // free lookup maps
Helpers:
mw_class_loader(); class_loader_add_directories([$path]); class_loader_add_namespace('Foo\\Bar', $path); class_loader_resolve('Foo\\Bar\\Baz'); class_loader_stats();
Config
Publishable config: config/class-loader.php
Testing
composer test
composer analyse
HTTP inspection routes (class-loader/*) are registered only in the testing environment.