Aktueller Standort: Startseite> Neueste Artikel> Einkapselung DATE_SUNSET () Service in Laravel bietet City Sunset Abfrage an

Einkapselung DATE_SUNSET () Service in Laravel bietet City Sunset Abfrage an

M66 2025-05-31

In der Webentwicklung ist die Handhabungszeit- und Datumsfunktionen eine sehr häufige Voraussetzung. Wenn Sie einen Dienst in Laravel implementieren möchten, der Sunset Time von City anfragt, können Sie ihn implementieren, indem Sie die Funktion date_sunset () verknüpfen. Laravel bietet eine leistungsstarke Skalierbarkeit und macht modularisierende solche Funktionen sehr einfach. In diesem Artikel werden wir Schritt für Schritt erklären, wie diese Funktion implementiert werden kann.

1. Einführung bis Datum_Sunset () Funktion

DATE_SUNSET () ist eine integrierte Funktion in PHP. Es kann die Sonnenuntergangszeit des Ortes basierend auf dem angegebenen Breitengrad und Längengrad, Datum und anderen Parametern zurückgeben. Die grundlegende Verwendung ist wie folgt:

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

Wo $ Breitengrad und $ Länge der Breitengrad und Längengrad der Stadt sind. DATE_SUNSET () gibt die entsprechende Sonnenuntergangszeit basierend auf diesen Informationen zurück.

2.. Kapitulieren Sie die Funktion date_sunset ()

In Laravel können wir die Funktion date_sunset () zusammenstellen, indem wir eine Dienstklasse erstellen, wodurch die Operationen vereinfacht und die Wiederverwendbarkeit und Wartbarkeit des Codes verbessert werden.

2.1 Erstellen einer Serviceklasse

Erstens müssen wir in Laravel eine Dienstklasse erstellen, um diese Funktion zu verkörpern. Diese Serviceklasse kann über den Handwerksanweisungsbefehl generiert werden:

 php artisan make:service SunsetService

Anschließend implementieren wir die Kapselungslogik in der Datei App/Services/SunsetService.php :

 namespace App\Services;

class SunsetService
{
    /**
     * Holen Sie sich die Sonnenuntergangszeit der Stadt
     *
     * @param string $cityName Stadtname
     * @return string
     */
    public function getSunsetTimeByCity(string $cityName): string
    {
        // Erhalten Sie die Informationen zur Breite und Länge der Stadt durch den Stadtnamen
        $coordinates = $this->getCoordinatesByCity($cityName);

        if (!$coordinates) {
            return 'Städteinformationen können nicht erhalten werden';
        }

        // Holen Sie sich die Sonnenuntergangszeit
        return date_sunset(time(), SUNFUNCS_RET_STRING, $coordinates['latitude'], $coordinates['longitude'], 0, 0);
    }

    /**
     * 根据Stadtname获取城市的经纬度
     *
     * @param string $cityName Stadtname
     * @return array|null
     */
    private function getCoordinatesByCity(string $cityName)
    {
        // Extern anrufen API Erhalten Sie die Daten der Stadtbreiten- und Längengraddaten
        $url = "https://api.openweathermap.org/data/2.5/weather?q={$cityName}&appid=your_api_key";
        
        // Erhalten Sie die Daten der Breiten- und Längengraddaten der Stadt
        $response = file_get_contents($url);
        $data = json_decode($response, true);

        // Wenn die Anfrage erfolgreich ist und es Breiten- und Längengraddaten gibt,Kehren Sie zu Breitengrad und Längengrad zurück
        if ($data && isset($data['coord'])) {
            return [
                'latitude' => $data['coord']['lat'],
                'longitude' => $data['coord']['lon']
            ];
        }

        return null;
    }
}

2.2 Beschreibung

In der SunsetService Service -Klasse bieten wir zwei Hauptmethoden:

  • GETUNSETTIMEBYCITY () : Erhält einen Stadtnamen und kehrt die Sonnenuntergangszeit der Stadt zurück.

  • GetCoordinatesByCity () : Verwenden Sie eine externe API (z. B. OpenWeatherMap -API), um den Breitengrad und die Länge der Stadt basierend auf dem Namen der Stadt zu erhalten.

In GetCoordinatesByCity () verwenden wir die OpenWeatherMap -API, um die Informationen zu Breitengraden und Längengrad der Stadt zu erhalten. In der Praxis müssen Sie den API -Schlüssel ersetzen, den Your_API_Key für sich selbst beantragt.

3. Erstellen Sie einen Controller, um den Dienst zu nutzen

Als nächstes benötigen wir einen Controller, der den SunsetService -Service anruft und das Ergebnis in das Front-End zurücksetzt. Wir können den Controller erzeugen durch:

 php artisan make:controller SunsetController

Verwenden Sie dann den Dienst in 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;
    }

    /**
     * Überprüfen Sie die Sonnenuntergangszeit der Stadt
     *
     * @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 Routing -Konfiguration

Fügen Sie als nächstes eine Route für den Controller in Routen/web.php hinzu:

 use App\Http\Controllers\SunsetController;

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

Auf dieser Route können Benutzer zugreifen /Sonnenuntergang durch ihren Browser über den Sonnenuntergang in Peking überprüfen.

4. Test

Jetzt haben Sie die Funktion date_sunset () erfolgreich verkörpert und einen Dienst erstellt, der Sunset Time nach City abfragt. Sie können diese Funktion testen, indem Sie die folgende URL besuchen:

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

Die zurückgegebenen JSON -Daten enthalten die Sonnenuntergangszeit der Stadt.

Zusammenfassen

Durch die Einkapselung der Funktion von Date_Sunset () können wir die Funktion der Abfrage der Sonnenuntergangszeiten nach City in Laravel problemlos implementieren. Sie können diesen Service nach bestimmten Anforderungen weiter erweitern, z. B. das Hinzufügen eines Caching -Mechanismus, die Unterstützung verschiedener Datumsabfragen usw. Ich hoffe, dieser Artikel hilft Ihnen, besser zu verstehen, wie Sie diese Funktion in Laravel implementieren können!