Laravel에서 통화 다루기

4668 단어 opensourcelaravelphp
대부분의 응용 프로그램은 어떤 방식으로든 통화를 처리해야 하며 불행히도 데이터베이스 제한으로 인해 항상 간단하지는 않습니다.

데이터베이스에 통화를 저장하는 방법에 대한 몇 가지 다른 솔루션 중에서 내가 선택한 것은 항상 정수로 센트 단위로 저장하는 것입니다. (다른 방법을 선호하는 경우 지금 돌아서십시오)

센트 단위로 저장하면 부동 소수점 처리와 같은 많은 문제가 해결되지만 변수가 어떤 상태인지 기억해야 하는 새로운 문제가 발생합니다. 실수로 통화를 USD 형식으로 저장하거나 센트를 센트로 변환하는 경우가 많습니다. 역시나 너무 높다. 또한 끊임없이 앞뒤로 변환하는 것은 꽤 빨리 오래되고 우리 모두 같은 것을 반복해서 쓰는 것을 싫어하지 않습니까?
내가 말하는 것을 보여 드리겠습니다.

$currency = 1;
$currencyInCents = $currency * 100;
$someFeeRate = 0.12;

$currencyInCentsWithFee = $currencyInCents * $someFeeRate;

$model = Model::create([
  'amount' => $currencyInCentsWithFee
]);

// $model->amount - 
//I already lost what format this was in may be I have a bad memory

return response()->json([
  'currency' => '$'.number_format($model->amount / 100, 2)
]);


내 변수에 "inCents"를 몇 번이나 써야 했는지 아세요?
물론 나는 이 예에서 약간 과장하고 있지만 일단 더 많은 계산 수준이 있으면 상황이 점점 더 나빠집니다.

또한 프로젝트 내의 다음 개발자가 방금 수행한 작업과 완전히 다른 작업을 수행할 가능성이 높습니다.

솔루션으로 우리는 통화를 위한 간단한 패키지를 생각해 냈습니다.
https://github.com/Kodeas/currency

$currency = Currency::fromUsd(1);

$someFeeRate = 0.12;

$currencyWithFee = Currency::fromCents($currency->inCents() * $someFeeRate);

//model has currency as a cast of Currency::class
$model = Model::create([
  'amount' => $currencyWithFee
]);

//$model->amount - 
//this is now an instance of Currency::class so it is in whatever format you wish

return response()->json([
  'currency' => $model->amount->toReadable('$')
]);

currency 클래스는 작성하는 개발자가 누구인지에 관계없이 전체 앱에서 통화 작업을 표준화하기 위한 캐스트로 사용됩니다. 귀하의 통화는 항상 센트 단위로 저장되며 운영 중 귀하의 통화가 어떤 상태였는지 절대 잊지 못할 것입니다.

너무 단순한 것에 대해 패키지를 추가하는 것에 대해 회의적일 수 있다는 점도 감사합니다. 따라서 자신만의 패키지를 만들 수 있도록 패키지가 어떻게 만들어졌는지도 설명합니다.

Laravel을 사용하는 동안 대부분의 통화 문제에 대한 훌륭하고 빠른 솔루션이 있습니다.

추가 사항이 있으면 패키지에 자유롭게 기여하고 이것이 도움이 되었다면 좋아요와 함께 ❤️를 보여주세요.

좋은 웹페이지 즐겨찾기