Une interface définit un ensemble de méthodes qu’une classe doit implémenter. En termes simples, c’est une manière de garantir que différentes classes ont certains comportements communs.
Laravel 11 propose une structure d’application plus légère et introduit des fonctionnalités comme une structure optimisée, une limitation de taux par seconde (per-second rate limiting), des routes (health routing), etc.
Laravel 11 a ajouté une nouvelle commande Artisan pour créer une interface. Vous pouvez utiliser la commande suivante pour créer une nouvelle interface dans Laravel 11 :
php artisan make:interface {interfaceName}
Exemple : Créer une interface dans Laravel
Exécutez la commande suivante pour créer l’interface PostInterface :
php artisan make:interface Interfaces/PostInterface
Définir des fonctions dans l’interface – Ajoutez les fonctions publishPost() et getPostDetails() dans le fichier PostInterface.php :
app/Interfaces/PostInterface.php
<?php
namespace App\Interfaces;
interface PostInterface
{
public function publishPost($title, $content);
public function getPostDetails($postId);
}
Créer des classes
Créez deux nouvelles classes et implémentez l’interface PostInterface :
php artisan make:class Services/WordpressService
php artisan make:class Services/ShopifyService
Mettez à jour les fichiers comme suit :
app/Services/WordpressService.php
<?php
namespace App\Services;
use App\Interfaces\PostInterface;
class WordPressService implements PostInterface
{
/**
* Write code on Method
*
* @return response()
*/
public function publishPost($title, $content) {
info("Publish post in WordPress");
}
/**
* Write code on Method
*
* @return response()
*/
public function getPostDetails($postId) {
info("Get post details from WordPress");
}
}
app/Services/ShopifyService.php
<?php
namespace App\Services;
use App\Interfaces\PostInterface;
class ShopifyService implements PostInterface
{
/**
* Write code on Method
*
* @return response()
*/
public function publishPost($title, $content) {
info("Publish post in Shopify");
}
/**
* Write code on Method
*
* @return response()
*/
public function getPostDetails($postId) {
info("Get post details from Shopify");
}
}
Créer des contrôleurs
php artisan make:controller WordPressPostController
php artisan make:controller ShopifyPostController
Ajoutez le code suivant dans les contrôleurs :
app/Http/Controllers/WordpressPostController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Services\WordpressService;
class WordPressPostController extends Controller
{
protected $wordpressService;
/**
* Write code on Method
*
* @return response()
*/
public function __construct(WordPressService $wordpressService) {
$this->wordpressService = $wordpressService;
}
/**
* Write code on Method
*
* @return response()
*/
public function index(Request $request) {
$this->wordpressService->publishPost('This is title.', 'This is body.');
return response()->json(['message' => 'Post published successfully']);
}
}
app/Http/Controllers/ShopifyPostController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Services\ShopifyService;
class ShopifyPostController extends Controller
{
protected $shopifyService;
/**
* Write code on Method
*
* @return response()
*/
public function __construct(ShopifyService $shopifyService) {
$this->shopifyService = $shopifyService;
}
/**
* Write code on Method
*
* @return response()
*/
public function index(Request $request) {
$this->shopifyService->publishPost('This is title.', 'This is body.');
return response()->json(['message' => 'Post published successfully']);
}
}
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\WordpressPostController;
use App\Http\Controllers\ShopifyPostController;
Route::get('/post-wordpress', [WordpressPostController::class, 'index']);
Route::get('/post-shopify', [ShopifyPostController::class, 'index']);
Résultat attendu
Lorsque vous accédez aux routes définies, vous verrez les résultats suivants dans les journaux :
[2024-03-03 17:05:09] local.INFO: Publish post in WordPress
[2024-03-03 17:05:14] local.INFO: Publish post in Shopify
