Appearance
HasServiceProviderMethods Trait
The HasServiceProviderMethods
trait provides standardized methods for module service providers to handle common bootstrapping tasks such as registering configurations, views, translations, and migrations.
Features
This trait offers:
- Standardized approach to bootstrapping module components
- Automatic registration of translations, configurations, views, and migrations
- Integration with module interaction traits
- Blade component namespace registration
Key Methods
bootConfigViewTranslationAndMigrations(): void
Bootstrap method that calls all of the registration methods in the correct order.
- Behavior:
- Registers translations
- Registers configurations
- Registers views
- Loads migrations
- Checks module interaction traits
registerTranslations(): void
Registers translation files from the module's lang
directory.
- Behavior:
- Checks for translations in both application and module paths
- Loads standard and JSON translations
registerConfig(): void
Registers and publishes configuration files from the module.
- Behavior:
- Recursively scans the module's config directory
- Publishes all found configuration files
- Merges module configurations with application configurations
registerViews(): void
Registers and publishes view files from the module.
- Behavior:
- Publishes views to the application's views directory
- Loads views from both published and module locations
- Registers Blade component namespace based on the module name
Usage Example
php
<?php
namespace Modules\Blog\Providers;
use Illuminate\Support\ServiceProvider;
use ModuleManager\ModuleManager\Concerns\HasServiceProviderMethods;
class BlogServiceProvider extends ServiceProvider
{
use HasServiceProviderMethods;
/**
* @var string
*/
protected $moduleName = 'Blog';
/**
* @var string
*/
protected $nameLower = 'blog';
/**
* Boot the application events.
*/
public function boot(): void
{
$this->bootConfigViewTranslationAndMigrations();
// Additional module-specific boot logic...
}
/**
* Register the service provider.
*/
public function register(): void
{
// Module-specific registration logic...
}
}
Trait Verification
The trait includes methods to verify that the application correctly uses the module's interaction traits:
checkIfUserUsesTrait(string $trait): void
- Checks if user model uses a specific traitcheckIfTenantUsesTrait(string $trait): void
- Checks if tenant model uses a specific traitcheckIfAppUsesModulesTraits(): void
- Automatically scans for and verifies module interaction traits
Notes
- This trait significantly reduces boilerplate code in module service providers
- It follows the conventions established by the Laravel Modules package
- The verification methods help ensure proper integration between modules and the main application
- Most methods are designed to handle both development and production environments appropriately