လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Laravel တွင် Encapsulations Daysunulation Day_sunsetsunsetsunset () 0 န်ဆောင်မှုသည်စီးတီးနေဝင်ချိန်ကိုထောက်ပံ့ပေးသည်

Laravel တွင် Encapsulations Daysunulation Day_sunsetsunsetsunset () 0 န်ဆောင်မှုသည်စီးတီးနေဝင်ချိန်ကိုထောက်ပံ့ပေးသည်

M66 2025-05-31

Web Development တွင်အချိန်နှင့်နေ့စွဲနှင့်သက်ဆိုင်သောလုပ်ဆောင်ချက်များသည်အလွန်အသုံးများသောလိုအပ်ချက်ဖြစ်သည်။ နေဝင်ချိန်တွင်နေဝင်ချိန်အချိန်ကိုရရှိသော Laravel တွင် 0 န်ဆောင်မှုကိုသင်အကောင်အထည်ဖော်လိုပါက Day_sunset () function ကို encapsulating လုပ်ခြင်းဖြင့်၎င်းကိုအကောင်အထည်ဖော်နိုင်သည်။ Laravel သည်အစွမ်းထက်သောပမာဏကိုမြှင့်တင်ပေးသည်။ ဒီဆောင်းပါးမှာဒီ function ကိုဘယ်လိုအကောင်အထည်ဖော်ရမယ်ဆိုတာအဆင့်ဆင့်ကိုဘယ်လိုရှင်းပြမလဲ။

1 ။ Date_SunSet () function ကိုမိတ်ဆက်ခြင်း

Date_sunset () PHP တွင် built-in function တစ်ခုဖြစ်သည်။ ပေးထားသောလတ်တီတွဒ်နှင့်လောင်ဂျီတွဒ်, နေ့စွဲနှင့်အခြား parameters တွေကိုအခြေခံသည့်နေရာ၏နေဝင်ချိန်အချိန်ကိုပြန်ပို့နိုင်သည်။ အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

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

$ လတ်တီတွဒ် နှင့် $ လောင်ဂျီတွဒ် တို့သည်မြို့၏လတ်တီတွဒ်နှင့်လောင်ဂျီတွဒ်တို့ဖြစ်သည်။ Date_sunset () သည် ဤအချက်အလက်အပေါ် အခြေခံ. သက်ဆိုင်ရာနေဝင်ချိန်အချိန်ကိုပြန်ပို့ပေးလိမ့်မည်။

2 ။ DABE_SUNSESSESSESSESSUTE () function ကို encapsult

Laravel တွင် day_sunsetsetset () function ကို 0 န်ဆောင်မှုအတန်းတစ်ခု ဖန်တီး. 0 န်ဆောင်မှုအတန်းတစ်ခု ဖန်တီး. 0 န်ဆောင်မှုအတန်းတစ်ခု ဖန်တီး. 0 န်ဆောင်မှုကိုရိုးရှင်းအောင်ပြုလုပ်ခြင်းနှင့်ကုဒ်၏ပြန်လည်သုံးသပ်ခြင်းနှင့်ထိန်းသိမ်းခြင်းကိုတိုးမြှင့်ခြင်း။

2.1 ဝန်ဆောင်မှုအတန်းကိုဖန်တီးပါ

ပထမ ဦး စွာ Laravel တွင်ကျွန်ုပ်တို့သည်ဤလုပ်ဆောင်မှုကို encapsulate လုပ်ရန်ဝန်ဆောင်မှုအတန်းကိုဖန်တီးရန်လိုအပ်သည်။ ဤ 0 န်ဆောင်မှုအတန်းကို Artisan command မှတဆင့်ထုတ်လုပ်နိုင်သည်။

 php artisan make:service SunsetService

ထို့နောက်ကျွန်ုပ်တို့သည် အက်ပလီကေးရှင်း / 0 န်ဆောင်မှုများ / Sunsetservice.php ဖိုင်တွင် Encapsulationulation Logic ကိုအကောင်အထည်ဖော်သည်။

 namespace App\Services;

class SunsetService
{
    /**
     * မြို့၏နေဝင်ချိန်အချိန်ကိုရယူပါ
     *
     * @param string $cityName မြို့နာမည်
     * @return string
     */
    public function getSunsetTimeByCity(string $cityName): string
    {
        // မြို့အမည်ရှိမြို့၏လတ်တီတွဒ်နှင့်လောင်ဂျီတွဒ်အချက်အလက်များကိုရယူပါ
        $coordinates = $this->getCoordinatesByCity($cityName);

        if (!$coordinates) {
            return 'City Information ကိုမရနိုင်ပါ';
        }

        // နေဝင်ချိန်အချိန်ကိုရယူပါ
        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;
    }
}

2.2 ဖော်ပြချက်

SunSetservice 0 န်ဆောင်မှုအတန်းတွင်ကျွန်ုပ်တို့သည်အဓိကနည်းလမ်းနှစ်ခုကိုပေးသည်။

  • GetUnsettInterbycity () - မြို့နာမည်ကိုလက်ခံရရှိပြီးမြို့၏နေဝင်ချိန်အချိန်ကိုပြန်ပို့သည်။

  • GetCoordinatesBycity () - မြို့၏အမည်ကို အခြေခံ. လတ်တီတွဒ်နှင့်လောင်ဂျီတွဒ်ကိုရရှိရန်အတွက်ပြင်ပ API (ဥပမာ openweeth api) ကိုသုံးပါ။

GetCoordinatesBycity တွင် () မြို့၏လတ်တီတွဒ်နှင့်လောင်ဂျီတွဒ်အချက်အလက်များရရှိရန် OpenWEVELMAP API ကိုအသုံးပြုသည်။ လက်တွေ့တွင်, သင်၏ API key ကိုသင်အစားထိုးရန်လိုအပ်သည်။

3 ။ 0 န်ဆောင်မှုကိုအသုံးပြုရန် Controller ကိုဖန်တီးပါ

ထို့နောက်ကျွန်ုပ်တို့သည် Sunsetservice 0 န်ဆောင်မှုကိုခေါ်ယူရန်နှင့်ရလဒ်ကိုရှေ့တန်းမှပြန်ပို့ရန်အတွက် Controller လိုအပ်သည်။ ကျွန်ုပ်တို့သည် Controller ကိုထုတ်လုပ်နိုင်သည်။

 php artisan make:controller SunsetController

ထို့နောက် 0 န်ဆောင်မှုကို app / http / controllers / controllers / Sunsetcontontroller.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
        ]);
    }
}

3.1 routing configuration ကို

ထို့နောက် လမ်းကြောင်း / web.php တွင် Controller အတွက်လမ်းကြောင်းတစ်ခုထည့်ပါ။

 use App\Http\Controllers\SunsetController;

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

ဤလမ်းကြောင်းမှတစ်ဆင့်အသုံးပြုသူများသည်နေဝင်ချိန် / နေဝင်ချိန် / နေဝင်နိုင်ပါသလား။

4 ။ စမ်းသပ်မှု

ယခုသင်သည် Day_sunsetsetsetsetset () function ကိုအောင်မြင်စွာ Encapsulated လုပ်ပြီးစီးတီးအားဖြင့်နေဝင်ချိန်အချိန်ကိုမေးမြန်းသော 0 န်ဆောင်မှုတစ်ခုကိုဖန်တီးထားသည်။ အောက်ပါ URL သို့လာရောက်လည်ပတ်ခြင်းအားဖြင့်ဤအင်္ဂါရပ်ကိုသင်စစ်ဆေးနိုင်သည်။

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

ပြန်လာသော JSON ဒေတာတွင်နေဝင်ချိန်တွင်နေဝင်ချိန်အချိန်များတွင်ပါ 0 င်မည်ဖြစ်သည်။

အကျဉ်းချုပ်

DAIRE_SUNSETSet () function ကို encapsuating အားဖြင့် Laravel ရှိနေဝင်ချိန်ကာလကို 0 င်ရောက်ခြင်းကိုအလွယ်တကူအကောင်အထည်ဖော်နိုင်သည်။ caching ယန္တရားကိုထည့်သွင်းခြင်း, မတူကွဲပြားသောမေးမြန်းခြင်းများကိုထောက်ပံ့ခြင်းစသည့်အသေးစိတ်အချက်အလက်များအရဤ 0 န်ဆောင်မှုကိုထပ်မံတိုးချဲ့နိုင်သည်။