1. Go to this page and download the library: Download rawnoq/laravel-hmvc 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/ */
namespace Modules\Blog\Providers;
use Illuminate\Support\ServiceProvider;
class ServiceProvider extends ServiceProvider
{
public function register(): void
{
// Register module services
}
public function boot(): void
{
// Boot module services
}
}
namespace Modules\Authentication\App\Providers;
use Illuminate\Support\ServiceProvider;
class ServiceProvider extends ServiceProvider
{
public function register(): void
{
register_class_alias(
'Modules\Authentication\App\Models\BaseUser',
config('authentication_dependencies.models.user')
);
}
}
namespace Modules\Authentication\App\Providers;
use Illuminate\Support\ServiceProvider;
class ServiceProvider extends ServiceProvider
{
public function register(): void
{
register_class_aliases([
'Modules\Authentication\App\Models\BaseUser' => config('authentication_dependencies.models.user'),
'Modules\Authentication\App\Http\Resources\UserResource' => config('authentication_dependencies.resources.user'),
]);
}
}
namespace Modules\Authentication\App\Providers;
use Illuminate\Support\ServiceProvider;
class ServiceProvider extends ServiceProvider
{
public function register(): void
{
registerClassAliases([
'Modules\Authentication\App\Models\BaseUser' => config('authentication_dependencies.models.user'),
'Modules\Authentication\App\Http\Resources\UserResource' => config('authentication_dependencies.resources.user'),
]);
}
}
namespace Modules\Authentication\App\Providers;
use Illuminate\Support\ServiceProvider;
use Rawnoq\HMVC\Support\RegistersClassAliases;
class ServiceProvider extends ServiceProvider
{
use RegistersClassAliases;
public function register(): void
{
$this->registerClassAlias(
'Modules\Authentication\App\Models\BaseUser',
config('authentication_dependencies.models.user')
);
}
}
use Modules\Blog\App\Http\Controllers\BlogController;
use Illuminate\Support\Facades\Route;
Route::get('/blog', [BlogController::class, 'index']);
Route::get('/blog/{post}', [BlogController::class, 'show']);
use Modules\Blog\App\Http\Controllers\BlogController;
use Illuminate\Support\Facades\Route;
Route::apiResource('posts', BlogController::class);
// In controller
return view('blog::posts.index', ['posts' => $posts]);
// In Blade
@
// In code
trans('blog::messages.welcome');
// In Blade
{{ __('blog::messages.welcome') }}
config('blog.some_key');
namespace Modules\Blog\App\DTOs;
use Rawnoq\HMVC\DTOs\BaseDto;
final readonly class PostDto extends BaseDto
{
public function __construct(
public string $title,
public string $content,
public ?string $slug = null,
) {}
public static function fromArray(array $data): static
{
return new static(
title: $data['title'],
content: $data['content'],
slug: $data['slug'] ?? null,
);
}
public function toArray(): array
{
return [
'title' => $this->title,
'content' => $this->content,
'slug' => $this->slug,
];
}
}
// In a controller
use Modules\Blog\App\DTOs\PostDto;
public function store(StorePostRequest $request)
{
$dto = PostDto::fromRequest($request);
// Use DTO with type safety
$post = Post::create($dto->toArray());
return response()->json($post);
}