웹 개발에서 시간 및 날짜 관련 기능 처리는 매우 일반적인 요구 사항입니다. City의 일몰 시간을 쿼리하는 Laravel에서 서비스를 구현하려면 date_sunset () 함수를 캡슐화하여이를 구현할 수 있습니다. Laravel은 강력한 확장 성을 제공하여 이러한 기능을 매우 간단하게 모듈화합니다. 이 기사에서는이 기능을 구현하는 방법을 단계별로 설명합니다.
date_sunset () 는 PHP의 내장 기능입니다. 주어진 위도 및 경도, 날짜 및 기타 매개 변수에 따라 장소의 일몰 시간을 반환 할 수 있습니다. 기본 사용량은 다음과 같습니다.
date_sunset(time(), SUNFUNCS_RET_STRING, $latitude, $longitude, 0, 0);
위도 와 $ 경도는 도시의 위도와 경도입니다. date_sunset () 은이 정보에 따라 해당 일몰 시간을 반환합니다.
Laravel에서는 서비스 클래스를 생성하여 Date_Sunset () 함수를 캡슐화하여 작업을 단순화하고 코드의 재사용 성과 유지 가능성을 향상시킬 수 있습니다.
먼저 Laravel에서는이 기능을 캡슐화하기 위해 서비스 클래스를 만들어야합니다. 이 서비스 클래스는 장인 명령을 통해 생성 될 수 있습니다.
php artisan make:service SunsetService
그런 다음 App/Services/SunSetService.php 파일에서 캡슐화 로직을 구현합니다.
namespace App\Services;
class SunsetService
{
/**
* 도시의 일몰 시간을 얻으십시오
*
* @param string $cityName 도시 이름
* @return string
*/
public function getSunsetTimeByCity(string $cityName): string
{
// 도시 이름을 통해 도시의 위도 및 경도 정보를 얻으십시오.
$coordinates = $this->getCoordinatesByCity($cityName);
if (!$coordinates) {
return '도시 정보를 얻을 수 없습니다';
}
// 일몰 시간을 얻으십시오
return date_sunset(time(), SUNFUNCS_RET_STRING, $coordinates['latitude'], $coordinates['longitude'], 0, 0);
}
/**
* 根据도시 이름获取城市的经纬度
*
* @param string $cityName 도시 이름
* @return array|null
*/
private function getCoordinatesByCity(string $cityName)
{
// 외부 전화 API 도시 위도 및 경도 데이터를 얻습니다
$url = "https://api.openweathermap.org/data/2.5/weather?q={$cityName}&appid=your_api_key";
// 도시의 위도 및 경도 데이터를 얻으십시오
$response = file_get_contents($url);
$data = json_decode($response, true);
// 요청이 성공하고 위도 및 경도 데이터가있는 경우,위도와 경도로 돌아갑니다
if ($data && isset($data['coord'])) {
return [
'latitude' => $data['coord']['lat'],
'longitude' => $data['coord']['lon']
];
}
return null;
}
}
SunSetService 서비스 클래스에서는 두 가지 주요 방법을 제공합니다.
getSunsetTimeByCity () : 도시 이름을 받고 도시의 일몰 시간을 반환합니다.
getCoordinatesBycity () : 외부 API (예 : OpenWeatherMap API)를 사용하여 도시의 이름을 기반으로 도시의 위도와 경도를 얻으십시오.
GetCoordinatesBycity () 에서는 OpenWeatherMap API를 사용하여 도시의 위도 및 경도 정보를 얻습니다. 실제로 your_api_key가 스스로 적용하는 API 키를 교체해야합니다.
다음으로 SunSetService 서비스를 호출하고 결과를 프론트 엔드로 반환하려면 컨트롤러가 필요합니다. 다음과 같이 컨트롤러를 생성 할 수 있습니다.
php artisan make:controller SunsetController
그런 다음 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;
}
/**
* 도시의 일몰 시간을 확인하십시오
*
* @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
]);
}
}
다음으로 Loutes/Web.php 에서 컨트롤러의 경로를 추가하십시오.
use App\Http\Controllers\SunsetController;
Route::get('/sunset', [SunsetController::class, 'getSunsetTime']);
이 경로를 통해 사용자는 브라우저를 통해 City = Beijing에 액세스 할 수 있습니다. 베이징의 일몰 시간을 확인할 수 있습니다.
이제 date_sunset () 함수를 성공적으로 캡슐화하고 City의 일몰 시간을 쿼리하는 서비스를 만들었습니다. 다음 URL을 방문 하여이 기능을 테스트 할 수 있습니다.
http://m66.net/sunset?city=Beijing
반환 된 JSON 데이터에는 도시의 일몰 시간이 포함됩니다.
date_sunset () 함수를 캡슐화하여 Laravel의 City에서 일몰 시간을 쿼리하는 기능을 쉽게 구현할 수 있습니다. 캐싱 메커니즘 추가, 다른 날짜 쿼리 지원 등과 같은 특정 요구에 따라이 서비스를 더 확장 할 수 있습니다.이 기사는 Laravel 에서이 기능을 구현하는 방법을 더 잘 이해하는 데 도움이되기를 바랍니다!