Position actuelle: Accueil> Derniers articles> Encapsulation Date_sunset () Le service à Laravel fournit la requête City Sunset

Encapsulation Date_sunset () Le service à Laravel fournit la requête City Sunset

M66 2025-05-31

Dans le développement Web, la gestion des fonctions liées à la date est une exigence très courante. Si vous souhaitez implémenter un service dans Laravel qui requiert le temps de Sunset par ville, vous pouvez l'implémenter en encapsulant la fonction date_sunset () . Laravel offre une évolutivité puissante, ce qui rend la modularisation de telles fonctionnalités très simple. Dans cet article, nous expliquerons étape par étape comment implémenter cette fonction.

1. INTRODUCTION À DATE_SUNSET ()

Date_sunset () est une fonction intégrée dans PHP. Il peut retourner l'heure du coucher du soleil de la place en fonction de la latitude et de la longitude, de la date, de la date et d'autres paramètres donnés. L'utilisation de base est la suivante:

 date_sunset(time(), SUNFUNCS_RET_STRING, $latitude, $longitude, 0, 0);

$ latitude et $ longitude sont la latitude et la longitude de la ville. Date_sunset () renverra l'heure du coucher du soleil correspondante en fonction de ces informations.

2. Encapsuler la fonction date_sunset ()

Dans Laravel, nous pouvons encapsuler la fonction date_sunset () en créant une classe de service, simplifiant ainsi les opérations et améliorant la réutilisabilité et la maintenabilité du code.

2.1 Créer une classe de service

Tout d'abord, dans Laravel, nous devons créer une classe de service pour résumer cette fonction. Cette classe de service peut être générée via la commande Artisan:

 php artisan make:service SunsetService

Ensuite, nous implémentons la logique d'encapsulation dans le fichier App / Services / SunsetService.php :

 namespace App\Services;

class SunsetService
{
    /**
     * Obtenez l'heure du coucher du soleil de la ville
     *
     * @param string $cityName Nom de la ville
     * @return string
     */
    public function getSunsetTimeByCity(string $cityName): string
    {
        // Obtenir les informations de latitude et de longitude de la ville à travers le nom de la ville
        $coordinates = $this->getCoordinatesByCity($cityName);

        if (!$coordinates) {
            return 'Impossible d'obtenir des informations sur la ville';
        }

        // Obtenez l'heure du coucher du soleil
        return date_sunset(time(), SUNFUNCS_RET_STRING, $coordinates['latitude'], $coordinates['longitude'], 0, 0);
    }

    /**
     * 根据Nom de la ville获取城市的经纬度
     *
     * @param string $cityName Nom de la ville
     * @return array|null
     */
    private function getCoordinatesByCity(string $cityName)
    {
        // Appeler externe API Obtenir des données de latitude et de longitude de la ville
        $url = "https://api.openweathermap.org/data/2.5/weather?q={$cityName}&appid=your_api_key";
        
        // Obtenir les données de latitude et de longitude de la ville
        $response = file_get_contents($url);
        $data = json_decode($response, true);

        // Si la demande est réussie et qu'il y a des données de latitude et de longitude,Retour à la latitude et à la longitude
        if ($data && isset($data['coord'])) {
            return [
                'latitude' => $data['coord']['lat'],
                'longitude' => $data['coord']['lon']
            ];
        }

        return null;
    }
}

2.2 Description

Dans la classe de services SunsetService , nous fournissons deux méthodes principales:

  • getSunsetTimeBycity () : reçoit un nom de la ville et renvoie l'heure du coucher du soleil de la ville.

  • getCoOrdinetesBycity () : Utilisez une API externe (comme l'Openweathermap API) pour obtenir la latitude et la longitude de la ville en fonction du nom de la ville.

Dans getCoOrdinesBycity () , nous utilisons l'API OpenWeathermap pour obtenir les informations de latitude et de longitude de la ville. En pratique, vous devez remplacer la clé API que votre_API_KEY s'applique pour vous-même.

3. Créez un contrôleur pour utiliser le service

Ensuite, nous avons besoin d'un contrôleur pour appeler le service SunsetService et retourner le résultat au frontal. Nous pouvons générer le contrôleur par:

 php artisan make:controller SunsetController

Ensuite, utilisez le service dans App / Http / Controllers / SunsetController.php :

 namespace App\Http\Controllers;

use App\Services\SunsetService;
use Illuminate\Http\Request;

class SunsetController extends Controller
{
    protected $sunsetService;

    public function __construct(SunsetService $sunsetService)
    {
        $this->sunsetService = $sunsetService;
    }

    /**
     * Vérifiez l'heure du coucher du soleil de la ville
     *
     * @param Request $request
     * @return \Illuminate\Http\Response
     */
    public function getSunsetTime(Request $request)
    {
        $city = $request->get('city', 'Beijing');
        $sunsetTime = $this->sunsetService->getSunsetTimeByCity($city);

        return response()->json([
            'city' => $city,
            'sunset_time' => $sunsetTime
        ]);
    }
}

3.1 Configuration de routage

Ensuite, ajoutez un itinéraire pour le contrôleur dans les itinéraires / web.php :

 use App\Http\Controllers\SunsetController;

Route::get('/sunset', [SunsetController::class, 'getSunsetTime']);

Grâce à cette voie, les utilisateurs peuvent accéder / coucher de soleil? City = Pékin via leur navigateur pour vérifier le temps de coucher du soleil à Pékin.

4. Test

Maintenant, vous avez résisté avec succès à la fonction date_sunset () et créé un service qui interroge le temps de Sunset par ville. Vous pouvez tester cette fonctionnalité en visitant l'URL suivante:

 http://m66.net/sunset?city=Beijing

Les données JSON renvoyées contiendront le temps de coucher du soleil de la ville.

Résumer

En encapsulant la fonction date_sunset () , nous pouvons facilement implémenter la fonction de l'interrogation des temps de coucher du soleil par ville de Laravel. Vous pouvez davantage étendre ce service en fonction de besoins spécifiques, tels que l'ajout d'un mécanisme de mise en cache, la prise en charge de différentes requêtes de date, etc. J'espère que cet article vous aidera à mieux comprendre comment mettre en œuvre cette fonctionnalité dans Laravel!