Клас Number у Laravel надає можливість обробки чисел у форматах, що залежать від локалі, завдяки використанню розширення PHP Intl. Це спрощує обробку числових даних на міжнародному рівні.
Автоматичне опрацювання різних форматів локалей:
use Illuminate\Support\Number;
Number::parse($string);
Number::parseInt($string);
Number::parseFloat($string);
// З конкретною локаллю
Number::parseFloat(string: $string, locale: 'fr');
// З нестандартним типом
Number::parse(
string: $string,
type: NumberFormatter::TYPE_INT64,
locale: 'fr',
);
Ось приклад використання цих методів у системі фінансової звітності:
class FinancialDataProcessor
{
public function processReportData(array $reportData, string $locale)
{
return [
'revenue' => Number::parseFloat($reportData['revenue'], locale: $locale),
'expenses' => Number::parseFloat($reportData['expenses'], locale: $locale),
'transactions' => Number::parseInt($reportData['transactions'], locale: $locale),
'margin' => Number::parse(
string: $reportData['margin'],
type: NumberFormatter::TYPE_DOUBLE,
locale: $locale
)
];
}
public function importFinancialData(string $filePath, string $locale)
{
$records = [];
foreach ($this->readSpreadsheet($filePath) as $row) {
$records[] = [
'amount' => Number::parseFloat($row['amount'], locale: $locale),
'commission' => Number::parseFloat($row['commission'], locale: $locale),
'units' => Number::parseInt($row['units'], locale: $locale)
];
}
return $records;
}
}
$processor = new FinancialDataProcessor();
// Формат італійською: "1.234,56" перетворюється на 1234.56
$italianData = $processor->processReportData([
'revenue' => '1.234,56',
'expenses' => '456,78',
'transactions' => '25'
], 'it');
// Формат іспанською: "1.234,56" перетворюється на 1234.56
$spanishData = $processor->processReportData([
'revenue' => '1.234,56',
'expenses' => '456,78',
'transactions' => '25'
], 'es');
Ці методи парсингу автоматично обробляють різноманітність форматів чисел, роблячи ваші міжнародні застосунки більш надійними та зручними для користувачів