1. Go to this page and download the library: Download power-modules/framework library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
power-modules / framework example snippets
use Modular\Framework\App\ModularAppBuilder;
class OrdersModule implements PowerModule, ExportsComponents {
public static function exports(): array {
return [
OrderService::class,
];
}
public function register(ConfigurableContainerInterface $container): void
{
$container->set(OrderRepository::class, OrderRepository::class)
->addArguments([DatabaseConnection::class]);
$container->set(OrderService::class, OrderService::class)
->addArguments([OrderRepository::class]);
}
}
$app = new ModularAppBuilder(__DIR__)
->withModules(
\MyApp\Auth\AuthModule::class,
\MyApp\Orders\OrdersModule::class,
)
->build();
// Get any exported service
$orderService = $app->get(\MyApp\Orders\OrderService::class);
// Fully initialized, with all dependencies resolved within the module's own container
$app = new ModularAppBuilder(__DIR__)
->withPowerSetup(...RoutingSetup::withDefaults())
->withModules(
RoutingModule::class,
RouterModule::class,
UserModule::class,
OrderModule::class,
)
->withPowerSetup(new EventBusSetup()) // Pulls module events and handlers into a central event bus
->build();
class UserModule implements PowerModule, ExportsComponents {
public static function exports(): array {
return [
// Expose the service directly for in-process use
UserRepositoryInterface::class,
];
}
public function register(ConfigurableContainerInterface $container): void
{
$container->set(UserRepositoryInterface::class, UserService::class);
}
}
class OrderModule implements PowerModule, ImportsComponents {
public static function imports(): array {
return [
// Import the interface from UserModule for in-process communication
ImportItem::create(UserModule::class, UserRepositoryInterface::class),
];
}
public function register(ConfigurableContainerInterface $container): void
{
$container->set(OrderService::class, OrderService::class)
->addArguments([UserRepositoryInterface::class]);
}
}
class UserModule implements PowerModule, ExportsComponents, HasRoutes {
public static function exports(): array {
return [
// Still export the same interface — now resolved to an HTTP client rather than an in-process service
UserRepositoryInterface::class,
];
}
public function getRoutes(): array
{
return [
// Define HTTP routes for the User API
Route::get('/', UserController::class),
];
}
public function register(ConfigurableContainerInterface $container): void
{
// Implementation details remain private; OrderModule doesn't need to know anything changed
$container->set(UserApiService::class, UserApiService::class)
->addArguments([Psr\Http\ClientInterface::class]);
// Bind the interface to the API service instead of the in-process service
$container->set(UserRepositoryInterface::class, UserApiService::class);
$container->set(UserService::class, UserService::class);
$container->set(UserController::class, UserController::class)
->addArguments([UserService::class]);
}
}
class OrderModule implements PowerModule, ImportsComponents {
public static function imports(): array {
return [
// The same import as before — now backed by an HTTP client instead of an in-process service.
// You can also drop this import and implement your own HTTP client directly in OrderModule.
ImportItem::create(UserModule::class, UserRepositoryInterface::class),
];
}
public function register(ConfigurableContainerInterface $container): void
{
$container->set(OrderService::class, OrderService::class)
->addArguments([UserRepositoryInterface::class]);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.