Search by

microweber-packages / microweber-class-loader

boksiora

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

Homepage

pkg:composer/microweber-packages/microweber-class-loader

Statistics

Installs: 34

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-11-03 11:17 UTC

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_autoload callback
  • 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.