Home  >  Article  >  PHP Framework  >  laravel new module process

laravel new module process

WBOY
WBOYOriginal
2023-05-29 14:11:111014browse

Laravel is a modern PHP framework that provides a wealth of functions and tools so that developers can develop web applications efficiently. Among them, modular programming is an extremely important programming idea, and it is also well reflected in Laravel. This article will introduce the process and steps of creating a new module in Laravel.

1. Create module directory structure

In Laravel, a module is a collection of related controllers, models, views, language packages, etc. Therefore, before creating a new module, you need to First create the directory structure of the module. In the root directory of Laravel, create a directory named "Modules", and create the directory of the "Example" module in this directory. The structure is as follows:

app/Modules/Example
├── Config
│   └── config.php
├── Controllers
│   └── ExampleController.php
├── Models
│   ├── Example.php
│   └── ExampleRepository.php
├── Resources
│   ├── Lang
│   │   ├── en
│   │   │   └── example.php
│   │   └── zh
│   │       └── example.php
│   ├── Views
│   │   └── index.blade.php
│   └── assets
├── Routes
│   ├── api.php
│   └── web.php
└── Providers
    └── ExampleServiceProvider.php

In the above directory structure, the Config directory is used to store modules Configuration files, the Controllers directory stores controller files, the Models directory stores model files, the Resources directory stores other resource files, such as views, language packs, static files, etc., the Routes directory is used to store the routing files of the module, and the Providers directory is used to store Service provider for this module. Among them, Example is the name of the module, which can be named according to actual needs.

2. Configure routing files

In Laravel, routing is where URIs are mapped to specific operations. Therefore, when creating a new module, you need to configure the routing file of the module. In the Routes directory of the Example module, create two new files, web.php and api.php, and define the front-end and back-end routing of the module in these two files.

The following is an example:

//web.php
Route::group(['module' => 'Example', 'middleware' => ['web']], function() {
    Route::get('/', 'ExampleController@index');
});

//api.php
Route::group(['module' => 'Example', 'namespace' => 'AppModulesExampleControllersApi', 'prefix' => 'api/v1', 'middleware' => ['api']], function() {
    Route::get('/', 'ExampleApiController@index');
});

In this example, the web.php file defines a get request, mapping the root directory "/" to the index method of the Example controller. The api.php file defines a get request, mapping "/api/v1" to the index method of the ExampleApiController controller. Among them, the 'module' parameter specifies that the route belongs to the Example module, and the 'middleware' parameter specifies that the route depends on web middleware or api middleware. These middleware can be configured according to specific circumstances.

3. Create a controller

The controller is a mechanism used in Laravel to handle user requests. In the Controllers directory of the Example module, create a new ExampleController.php file and define an index method as an example.

The sample code is as follows:

namespace AppModulesExampleControllers;

use AppHttpControllersController;

class ExampleController extends Controller {

    public function index() {
        return view('example::index');
    }

}

In this example, the ExampleController class inherits from the Controller class provided by the Laravel framework. It contains an index method that returns the template file example::index.

4. Create a view file

In Laravel, views are used to display HTML pages or other response data. In the Resources directory of the Example module, create a new Views directory and create index.blade.php in it. This file is used as the view file for the example.

The sample code is as follows:

<!DOCTYPE html>
<html>
<head>
    <title>Example</title>
</head>
<body>
    <h1>Welcome to Example Module!</h1>
</body>
</html>

In this example, the index.blade.php file only contains a simple welcome statement to indicate that this is the homepage of the module.

5. Create models and service providers

In Laravel, models are used to interact with the database, and are usually used to encapsulate a table. In the Models directory of the Example module, create two files, Example.php and ExampleRepository.php, representing the model and warehousing class respectively. Their functions are to interact with the database and encapsulate some query methods respectively.

After creating the model and storage class, you need to create a service provider in the Providers directory to register the model and storage class, and implement the register method of the service provider.

The sample code is as follows:

namespace AppModulesExampleProviders;

use IlluminateSupportServiceProvider;

class ExampleServiceProvider extends ServiceProvider {

    public function boot() {
        
    }

    public function register() {
        $this->app->bind('AppModulesExampleModelsExampleRepositoryInterface', 'AppModulesExampleModelsExampleRepository');
    }

}

In this example, the ExampleServiceProvider class inherits from the ServiceProvider class provided by the Laravel framework, and the ExampleRepository interface and ExampleRepository implementation class are registered through the register method. In actual use, you can obtain the ExampleRepository instance through the container, and then call its methods to implement the function of interacting with the database.

Summary:

Modular programming is a very important programming idea, and it is also well reflected in Laravel. Through the above steps, we can easily create a module in Laravel and implement interaction with the database and specific business logic. Of course, in actual projects, the design and implementation of modules go beyond this and need to be reasonably designed and developed based on specific business needs.

The above is the detailed content of laravel new module process. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn