Laravel fungsi dalam fungsi (attendance:ExportAbsenLog & Upload Ulang Sftp)
Fungsi pertama :
Jika menggunakan DB try catch maka :
- tidak boleh menyimpan fungsi kedua di dalam try
- saat memanggil fungsi kedua, ditambahkan string sebagai parameter untuk membedakan fungsi yang dilakukan oleh proses manual dan fungsi yang dipanggil dari fungsi lain
- hasil dari fungsi kedua dibuat kondisi jika error
public function upload(Request $request)
{
DB::beginTransaction();
try {
DB::select("
");
DB::commit(); } catch (\Exception $e) {
DB::rollback();
return response()->json([
'message' => 'Upload Try Error',
'status' => '0'
]);
}
$sync = $this->uploadSftp('yes');
if($sync == 1) {
// all good
return response()->json([
'message' => 'Proses Upload Ulang SFTP Selesai',
'status' => '1'
]);
} else {
return response()->json([
'message' => 'Upload Proses Error',
'status' => '0'
]);
}
}
Fungsi kedua :
- Jika fungsi kedua dipakai juga oleh proses yang lain (manual) bisa di tambahkan parameter yang diisi oleh variabel dengan nilai = null
- untuk mengembalikan (return) ke fungsi pertama maka dibuat kondisi yang menangkap nilai parameter, sedangkan kondisi lainnya (else) akan mengembalikan (return) untuk proses manual
public function uploadSftp($sftpulang = null)
{
//proses pertama
DB::select("
");
if($sftpulang){
return 1;
} else {
//Return Selesai
return response()->json([
'message' => 'Process Upload SFTP selesai',
'status' => 1
]);
}
}
Kesimpulan :
Kondisi tersebut terjadi ketika akan memanggil fungsi didalam fungsi dan dimana fungsi kedua dipakai juga oleh proses yang lain
Terdapat modifikasi yang dilakukan pada fungsi kedua (existing) :
- parameter fungsi ($sftpulang = null)
- return diberi kondisi
Referensi Tambahan :
https://www.petanikode.com/php-prosedur-fungsi/ dan
Komentar
Posting Komentar