Membuat Class Ucapan Otomatis dan Format Tanggal Indonesia
Tags: tutorial, php
Published: 2021-01-01 10:19:00

Mungkin ini bukan jalan yang terbaik, tapi sangat patut untuk dilihat alur logisnya. Mohon maaf code seada-adanya yaa.

### Persiapan
- Belajar dulu terkait penggunaan `class` pada php.
- Penggunaan fungsi tanggal atau `date`
- Penggunaan `if else` tentunya.

### 1. Deklarasi
Pada bagian ini di dalam fungsi kita perlu melakukan deklarasi item-item yang kita perlukan sebagai parameter _ucapan otomatis_. Parameter yang kita perlukan seperti; set lokasi, hari,tanggal, bulan dan tahun. Kita juga perlu memanggil kembali fungsi _array_ yang pernah kita buat dalam bagian sebelumnya untuk mengubah fungsi inggris ke dalam bahasa Indonesia. Dalam _case_ ini fungsi array tersimpan pada `class DateTimeFormat`. [Lihat ini](https://dev.to/andysaktia/format-tanggal-indonesia-3jd0/#3-pengolahan-data-hari)
```php
class Greating
{

  public $f;
  public $D;
  public $d;
  public $m;
  public $y;
  public $w;
  function setTimeZone($location)
  {
    $f = new DateTimeFormat;
    date_default_timezone_set($location);
    $D = date('D'); // hari dalam 2 huruf
    $d = date('d'); // angka tanggal
    $m = date('m'); // angka bulan
    $y = date('Y'); // angka tahun
    $w = date('H'); // jam
    $this->f = $f;
    $this->D = $D;
    $this->d = $d;
    $this->m = $m;
    $this->y = $y;
    $this->w = $w;
  }
```
[Lihat tabel `date()`](https://www.w3schools.com/php/func_date_date.asp)


### 2. Set Hari dan Bulan
Dalam hal ini saya memanggil Hari(`D`) dan Bulan (`m`). Untuk diubah dalam format Indonesia dengan memanfaatkan fungsi `array` yang tersimpan dalam `class DateTimeFormat` yang sudah di deklarasikan pada tahap 1.

```php
 function getDay()
  {
    // deklarasi parameter yang dibutuhkan
    $f = $this->f;  
    $D = $this->D; 
    
    // set Hari dengan pemanggilan index array
    $arr_day = $f->getNamaHari();
    $ret = $arr_day[$D];
    return $ret;
  }


  function getDate()
  {
    // deklarasi parameter yang dibutuhkan
    $f = $this->f;
    $m = $this->m;


    // set Bulan dengan pemanggilan index array
    $arr_month = $f->getNamaBulan();
    $m = $arr_month[$m];

    // set Format penulisan
    $ret = $this->d . ' ' . $m . ' ' . $this->y;
    return $ret;
  }
```


### 3. Fungsi Ucapan Otomatis
Setelah format hari dan tanggal telah kita dapat kita dapat melakukan tahap akhir dengan menggunakan parameter tanggal dan jam (`w`) untuk menentukan ucapan yang diperlukan.

```php
function getUcapan()
  {
     $a = $this->w;  // deklarasi ulang var jam
     if (($a>=6) && ($a<=11)) {
      return " <b> Selamat Pagi !! </b>";
    } else if(($a>=11) && ($a<15)){
      return " <b> Selamat  Siang !! </b>";
    } elseif(($a>=15) && ($a<=18)){
      return " <b> Selamat Sore !! </b>";
    } else{
      return " <b> Selamat Malam !! </b>";
    }
  }
```
### Keseluruhan code

```php
class Greating
{

  public $f;
  public $D;
  public $d;
  public $m;
  public $y;
  public $w;
  function setTimeZone($location)
  {
    $f = new DateTimeFormat;
    date_default_timezone_set($location);
    $D = date('D');
    $d = date('d');
    $m = date('m');
    $y = date('Y');
    $w = date('H');
    $this->f = $f;
    $this->D = $D;
    $this->d = $d;
    $this->m = $m;
    $this->y = $y;
    $this->w = $w;
  }
  function getDay()
  {
    $f = $this->f;
    $D = $this->D;
    $arr_day = $f->getNamaHari();
    $ret = $arr_day[$D];
    return $ret;
  }
  function getDate()
  {
    $f = $this->f;
    $m = $this->m;
    $arr_month = $f->getNamaBulan();
    $m = $arr_month[$m];
    $ret = $this->d . ' ' . $m . ' ' . $this->y;
    return $ret;
  }
  function getUcapan()
  {
     $a = $this->w;
     if (($a>=6) && ($a<=11)) {
      return " <b> Selamat Pagi !! </b>";
    } else if(($a>=11) && ($a<15)){
      return " <b> Selamat  Siang !! </b>";
    } elseif(($a>=15) && ($a<=18)){
      return " <b> Selamat Sore !! </b>";
    } else{
      return " <b> Selamat Malam !! </b>";
    }
  }
}

```

### How to use
```php
$ucapan = new Greating();
$ucapan->setTimeZone('Jakarta');
$format_hari = $ucapan->getDay();
$format_tgl = $ucapan->getDate();
$get_ucapaan = $ucapan->getUcapan();
```