diff --git a/src/Framework/MoneyFormatter.php b/src/Framework/MoneyFormatter.php
index b0271aa..7e8c7d5 100644
--- a/src/Framework/MoneyFormatter.php
+++ b/src/Framework/MoneyFormatter.php
@@ -11,6 +11,7 @@ declare(strict_types=1);
namespace IOcornerstone\Framework;
use NumberFormatter;
+use IOcornerstone\Framework\MoneyHelper;
/**
* Description of MoneyFormatter
@@ -21,61 +22,7 @@ use NumberFormatter;
*/
class MoneyFormatter
{
- private const CURRENCIES = [
- 'USD' => ['symbol' => '$', 'locale' => 'en_US', 'name' => 'US Dollar'],
- 'CAD' => ['symbol' => '$', 'locale' => 'en_CA', 'name' => 'Canadian Dollar'],
- 'EUR' => ['symbol' => '€', 'locale' => 'de_DE', 'name' => 'Euro'],
- 'GBP' => ['symbol' => '£', 'locale' => 'en_GB', 'name' => 'British Pound'],
- 'JPY' => ['symbol' => '¥', 'locale' => 'ja_JP', 'name' => 'Japanese Yen'],
- 'CNY' => ['symbol' => '¥', 'locale' => 'zh_CN', 'name' => 'Chinese Yuan'],
- 'AUD' => ['symbol' => '$', 'locale' => 'en_AU', 'name' => 'Australian Dollar'],
- 'NZD' => ['symbol' => '$', 'locale' => 'en_NZ', 'name' => 'New Zealand Dollar'],
- 'CHF' => ['symbol' => 'CHF','locale' => 'de_CH', 'name' => 'Swiss Franc'],
- 'SEK' => ['symbol' => 'kr', 'locale' => 'sv_SE', 'name' => 'Swedish Krona'],
- 'NOK' => ['symbol' => 'kr', 'locale' => 'nb_NO', 'name' => 'Norwegian Krone'],
- 'DKK' => ['symbol' => 'kr', 'locale' => 'da_DK', 'name' => 'Danish Krone'],
- 'PLN' => ['symbol' => 'zł', 'locale' => 'pl_PL', 'name' => 'Polish Zloty'],
- 'CZK' => ['symbol' => 'Kč', 'locale' => 'cs_CZ', 'name' => 'Czech Koruna'],
- 'HUF' => ['symbol' => 'Ft', 'locale' => 'hu_HU', 'name' => 'Hungarian Forint'],
- 'RON' => ['symbol' => 'lei','locale' => 'ro_RO', 'name' => 'Romanian Leu'],
- 'BGN' => ['symbol' => 'лв', 'locale' => 'bg_BG', 'name' => 'Bulgarian Lev'],
- 'TRY' => ['symbol' => '₺', 'locale' => 'tr_TR', 'name' => 'Turkish Lira'],
- 'RUB' => ['symbol' => '₽', 'locale' => 'ru_RU', 'name' => 'Russian Ruble'],
- 'UAH' => ['symbol' => '₴', 'locale' => 'uk_UA', 'name' => 'Ukrainian Hryvnia'],
- 'INR' => ['symbol' => '₹', 'locale' => 'hi_IN', 'name' => 'Indian Rupee'],
- 'PKR' => ['symbol' => '₨', 'locale' => 'ur_PK', 'name' => 'Pakistani Rupee'],
- 'BDT' => ['symbol' => '৳', 'locale' => 'bn_BD', 'name' => 'Bangladeshi Taka'],
- 'LKR' => ['symbol' => 'Rs', 'locale' => 'si_LK', 'name' => 'Sri Lankan Rupee'],
- 'NPR' => ['symbol' => '₨', 'locale' => 'ne_NP', 'name' => 'Nepalese Rupee'],
- 'THB' => ['symbol' => '฿', 'locale' => 'th_TH', 'name' => 'Thai Baht'],
- 'VND' => ['symbol' => '₫', 'locale' => 'vi_VN', 'name' => 'Vietnamese Dong'],
- 'MYR' => ['symbol' => 'RM', 'locale' => 'ms_MY', 'name' => 'Malaysian Ringgit'],
- 'SGD' => ['symbol' => '$', 'locale' => 'en_SG', 'name' => 'Singapore Dollar'],
- 'IDR' => ['symbol' => 'Rp', 'locale' => 'id_ID', 'name' => 'Indonesian Rupiah'],
- 'PHP' => ['symbol' => '₱', 'locale' => 'en_PH', 'name' => 'Philippine Peso'],
- 'KRW' => ['symbol' => '₩', 'locale' => 'ko_KR', 'name' => 'South Korean Won'],
- 'HKD' => ['symbol' => '$', 'locale' => 'zh_HK', 'name' => 'Hong Kong Dollar'],
- 'TWD' => ['symbol' => 'NT$','locale' => 'zh_TW', 'name' => 'New Taiwan Dollar'],
- 'AED' => ['symbol' => 'د.إ','locale' => 'ar_AE', 'name' => 'UAE Dirham'],
- 'SAR' => ['symbol' => '﷼', 'locale' => 'ar_SA', 'name' => 'Saudi Riyal'],
- 'QAR' => ['symbol' => '﷼', 'locale' => 'ar_QA', 'name' => 'Qatari Riyal'],
- 'KWD' => ['symbol' => 'د.ك','locale' => 'ar_KW', 'name' => 'Kuwaiti Dinar'],
- 'BHD' => ['symbol' => '.د.ب','locale' => 'ar_BH', 'name' => 'Bahraini Dinar'],
- 'OMR' => ['symbol' => '﷼', 'locale' => 'ar_OM', 'name' => 'Omani Rial'],
- 'ILS' => ['symbol' => '₪', 'locale' => 'he_IL', 'name' => 'Israeli New Shekel'],
- 'ZAR' => ['symbol' => 'R', 'locale' => 'en_ZA', 'name' => 'South African Rand'],
- 'NGN' => ['symbol' => '₦', 'locale' => 'en_NG', 'name' => 'Nigerian Naira'],
- 'EGP' => ['symbol' => 'E£', 'locale' => 'ar_EG', 'name' => 'Egyptian Pound'],
- 'KES' => ['symbol' => 'KSh','locale' => 'sw_KE', 'name' => 'Kenyan Shilling'],
- 'GHS' => ['symbol' => '₵', 'locale' => 'en_GH', 'name' => 'Ghanaian Cedi'],
- 'BRL' => ['symbol' => 'R$', 'locale' => 'pt_BR', 'name' => 'Brazilian Real'],
- 'ARS' => ['symbol' => '$', 'locale' => 'es_AR', 'name' => 'Argentine Peso'],
- 'CLP' => ['symbol' => '$', 'locale' => 'es_CL', 'name' => 'Chilean Peso'],
- 'COP' => ['symbol' => '$', 'locale' => 'es_CO', 'name' => 'Colombian Peso'],
- 'MXN' => ['symbol' => '$', 'locale' => 'es_MX', 'name' => 'Mexican Peso'],
- 'PEN' => ['symbol' => 'S/', 'locale' => 'es_PE', 'name' => 'Peruvian Sol'],
- 'UYU' => ['symbol' => '$U', 'locale' => 'es_UY', 'name' => 'Uruguayan Peso'],
-];
+
/**
* SQL for money:
@@ -203,21 +150,6 @@ class MoneyFormatter
return (int) round($minorUnits * $exchangeRate);
}
- public static function getCurrencyCodes(string $unit = "USD"): string
- {
- $ret = "";
- foreach (self::CURRENCIES as $code => $currency) {
- $ret .= sprintf(
- '',
- $code,
- ($code === $unit) ? "selected" : "",
- htmlspecialchars($currency['name']),
- $code
- );
- }
- return $ret;
- }
-
public static function isInputDecimalMoney($value) {
$matches = preg_match('/^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*$/', $value);
$decimal = found_string($value, '.');
@@ -232,11 +164,6 @@ class MoneyFormatter
if ($currencyCode !== "USD" && ! empty($locale) && $locale !== "en_US") {
return $locale;
}
- foreach (self::CURRENCIES as $code => $currency) {
- if ($code === $currencyCode) {
- return $currency['locale'] ?? null;
- }
- }
- return null;
+ return MoneyHelper::getLocaleFromCode($currencyCode);
}
}
diff --git a/src/Framework/MoneyHelper.php b/src/Framework/MoneyHelper.php
new file mode 100644
index 0000000..b173442
--- /dev/null
+++ b/src/Framework/MoneyHelper.php
@@ -0,0 +1,104 @@
+ ['symbol' => '$', 'locale' => 'en_US', 'name' => 'US Dollar'],
+ 'CAD' => ['symbol' => '$', 'locale' => 'en_CA', 'name' => 'Canadian Dollar'],
+ 'EUR' => ['symbol' => '€', 'locale' => 'de_DE', 'name' => 'Euro'],
+ 'GBP' => ['symbol' => '£', 'locale' => 'en_GB', 'name' => 'British Pound'],
+ 'JPY' => ['symbol' => '¥', 'locale' => 'ja_JP', 'name' => 'Japanese Yen'],
+ 'CNY' => ['symbol' => '¥', 'locale' => 'zh_CN', 'name' => 'Chinese Yuan'],
+ 'AUD' => ['symbol' => '$', 'locale' => 'en_AU', 'name' => 'Australian Dollar'],
+ 'NZD' => ['symbol' => '$', 'locale' => 'en_NZ', 'name' => 'New Zealand Dollar'],
+ 'CHF' => ['symbol' => 'CHF', 'locale' => 'de_CH', 'name' => 'Swiss Franc'],
+ 'SEK' => ['symbol' => 'kr', 'locale' => 'sv_SE', 'name' => 'Swedish Krona'],
+ 'NOK' => ['symbol' => 'kr', 'locale' => 'nb_NO', 'name' => 'Norwegian Krone'],
+ 'DKK' => ['symbol' => 'kr', 'locale' => 'da_DK', 'name' => 'Danish Krone'],
+ 'PLN' => ['symbol' => 'zł', 'locale' => 'pl_PL', 'name' => 'Polish Zloty'],
+ 'CZK' => ['symbol' => 'Kč', 'locale' => 'cs_CZ', 'name' => 'Czech Koruna'],
+ 'HUF' => ['symbol' => 'Ft', 'locale' => 'hu_HU', 'name' => 'Hungarian Forint'],
+ 'RON' => ['symbol' => 'lei', 'locale' => 'ro_RO', 'name' => 'Romanian Leu'],
+ 'BGN' => ['symbol' => 'лв', 'locale' => 'bg_BG', 'name' => 'Bulgarian Lev'],
+ 'TRY' => ['symbol' => '₺', 'locale' => 'tr_TR', 'name' => 'Turkish Lira'],
+ 'RUB' => ['symbol' => '₽', 'locale' => 'ru_RU', 'name' => 'Russian Ruble'],
+ 'UAH' => ['symbol' => '₴', 'locale' => 'uk_UA', 'name' => 'Ukrainian Hryvnia'],
+ 'INR' => ['symbol' => '₹', 'locale' => 'hi_IN', 'name' => 'Indian Rupee'],
+ 'PKR' => ['symbol' => '₨', 'locale' => 'ur_PK', 'name' => 'Pakistani Rupee'],
+ 'BDT' => ['symbol' => '৳', 'locale' => 'bn_BD', 'name' => 'Bangladeshi Taka'],
+ 'LKR' => ['symbol' => 'Rs', 'locale' => 'si_LK', 'name' => 'Sri Lankan Rupee'],
+ 'NPR' => ['symbol' => '₨', 'locale' => 'ne_NP', 'name' => 'Nepalese Rupee'],
+ 'THB' => ['symbol' => '฿', 'locale' => 'th_TH', 'name' => 'Thai Baht'],
+ 'VND' => ['symbol' => '₫', 'locale' => 'vi_VN', 'name' => 'Vietnamese Dong'],
+ 'MYR' => ['symbol' => 'RM', 'locale' => 'ms_MY', 'name' => 'Malaysian Ringgit'],
+ 'SGD' => ['symbol' => '$', 'locale' => 'en_SG', 'name' => 'Singapore Dollar'],
+ 'IDR' => ['symbol' => 'Rp', 'locale' => 'id_ID', 'name' => 'Indonesian Rupiah'],
+ 'PHP' => ['symbol' => '₱', 'locale' => 'en_PH', 'name' => 'Philippine Peso'],
+ 'KRW' => ['symbol' => '₩', 'locale' => 'ko_KR', 'name' => 'South Korean Won'],
+ 'HKD' => ['symbol' => '$', 'locale' => 'zh_HK', 'name' => 'Hong Kong Dollar'],
+ 'TWD' => ['symbol' => 'NT$', 'locale' => 'zh_TW', 'name' => 'New Taiwan Dollar'],
+ 'AED' => ['symbol' => 'د.إ', 'locale' => 'ar_AE', 'name' => 'UAE Dirham'],
+ 'SAR' => ['symbol' => '﷼', 'locale' => 'ar_SA', 'name' => 'Saudi Riyal'],
+ 'QAR' => ['symbol' => '﷼', 'locale' => 'ar_QA', 'name' => 'Qatari Riyal'],
+ 'KWD' => ['symbol' => 'د.ك', 'locale' => 'ar_KW', 'name' => 'Kuwaiti Dinar'],
+ 'BHD' => ['symbol' => '.د.ب', 'locale' => 'ar_BH', 'name' => 'Bahraini Dinar'],
+ 'OMR' => ['symbol' => '﷼', 'locale' => 'ar_OM', 'name' => 'Omani Rial'],
+ 'ILS' => ['symbol' => '₪', 'locale' => 'he_IL', 'name' => 'Israeli New Shekel'],
+ 'ZAR' => ['symbol' => 'R', 'locale' => 'en_ZA', 'name' => 'South African Rand'],
+ 'NGN' => ['symbol' => '₦', 'locale' => 'en_NG', 'name' => 'Nigerian Naira'],
+ 'EGP' => ['symbol' => 'E£', 'locale' => 'ar_EG', 'name' => 'Egyptian Pound'],
+ 'KES' => ['symbol' => 'KSh', 'locale' => 'sw_KE', 'name' => 'Kenyan Shilling'],
+ 'GHS' => ['symbol' => '₵', 'locale' => 'en_GH', 'name' => 'Ghanaian Cedi'],
+ 'BRL' => ['symbol' => 'R$', 'locale' => 'pt_BR', 'name' => 'Brazilian Real'],
+ 'ARS' => ['symbol' => '$', 'locale' => 'es_AR', 'name' => 'Argentine Peso'],
+ 'CLP' => ['symbol' => '$', 'locale' => 'es_CL', 'name' => 'Chilean Peso'],
+ 'COP' => ['symbol' => '$', 'locale' => 'es_CO', 'name' => 'Colombian Peso'],
+ 'MXN' => ['symbol' => '$', 'locale' => 'es_MX', 'name' => 'Mexican Peso'],
+ 'PEN' => ['symbol' => 'S/', 'locale' => 'es_PE', 'name' => 'Peruvian Sol'],
+ 'UYU' => ['symbol' => '$U', 'locale' => 'es_UY', 'name' => 'Uruguayan Peso'],
+ ];
+
+ public static function getCurrencyCodes(string $unit = "USD"): string
+ {
+ $ret = "";
+ foreach (self::CURRENCIES as $code => $currency) {
+ $ret .= sprintf(
+ '',
+ $code,
+ ($code === $unit) ? "selected" : "",
+ htmlspecialchars($currency['name']),
+ $code
+ );
+ }
+ return $ret;
+ }
+
+ public static function getLocaleFromCode(string $currencyCode = "USD"): ?string
+ {
+ foreach (self::CURRENCIES as $code => $currency) {
+ if ($code === $currencyCode) {
+ return $currency['locale'] ?? null;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/src/Framework/ParameterBag.php b/src/Framework/ParameterBag.php
index 23226ee..854b845 100644
--- a/src/Framework/ParameterBag.php
+++ b/src/Framework/ParameterBag.php
@@ -16,11 +16,11 @@ namespace IOcornerstone\Framework;
class ParameterBag {
public function __construct(readonly private array $parameters = []) { }
- public function get($key, $default = null) {
+ public function get($key, $default = null): mixed {
return $this->parameters[$key] ?? $default;
}
- public function has($key) {
+ public function has($key): bool {
return array_key_exists($key, $this->parameters);
}
}