automattic/jetpack-autoloader
A Composer-compatible autoloader for Jetpack and other Automattic PHP packages. It helps load classes across multiple plugins/projects without conflicts, supporting shared dependencies and smoother upgrades in WordPress environments.
Installation Add the package via Composer in your Laravel project:
composer require automattic/jetpack-autoloader
Register the autoloader in composer.json under autoload:
"autoload": {
"psr-4": {
"App\\": "app/",
"Jetpack\\": "vendor/automattic/jetpack-autoloader/src/"
}
}
Run composer dump-autoload.
First Use Case Use Jetpack’s core classes directly in Laravel:
use Jetpack\Modules\Module;
use Jetpack\Modules\ModuleLoader;
// Load a Jetpack module (e.g., "stats")
$moduleLoader = new ModuleLoader();
$moduleLoader->load('stats');
Lazy Loading: Load Jetpack modules on-demand to avoid performance overhead:
if (ModuleLoader::isModuleActive('stats')) {
$stats = new \Jetpack\Modules\Stats\Module();
$stats->init();
}
Dependency Injection: Bind Jetpack services to Laravel’s container:
$this->app->singleton(\Jetpack\Modules\ModuleLoader::class, function ($app) {
return new ModuleLoader($app['config']);
});
config/jetpack.php:
return [
'modules' => [
'stats' => [
'enabled' => env('JETPACK_STATS_ENABLED', false),
],
],
];
use Jetpack\Modules\ModuleEvent;
event(new ModuleEvent('stats', 'activated'));
Route::get('/jetpack/stats', function () {
return \Jetpack\Modules\Stats\API::getStats();
});
Jetpack\ namespace; ensure no collisions with your app.composer dump-autoload --optimize for production.composer dump-autoload was run and PSR-4 paths are correct./wp-content/jetpack/logs/ if WordPress is installed).Jetpack\Modules\Module.jetpack_module_loaded) for custom logic.enabled: false in config/jetpack.php for unused modules."autoload-dev": {
"psr-4": {
"Jetpack\\": "vendor/automattic/jetpack-autoloader/src/"
}
}
How can I help you explore Laravel packages today?