diff --git a/CHANGELOG.md b/CHANGELOG.md index d3e37221b2..0f99eb8427 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,12 +3,15 @@ ## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.24.0...1.24.1) - Removed domain `gmail.com.au` from `Provider\en_AU\Internet` (#886) +- Refreshed ISO currencies (#919) +- Improved italian phone number formats ## [2024-11-09, v1.24.0](https://github.com/FakerPHP/Faker/compare/v1.23.1..v1.24.0) - Fix internal deprecations in Doctrine's populator by @gnutix in (#889) - Fix mobile phone number pattern for France by @ker0x in (#859) - PHP 8.4 Support by @Jubeki in (#904) +- Add missing return type in annotations (#923) - Added support for PHP 8.4 (#904) diff --git a/src/Faker/Generator.php b/src/Faker/Generator.php index d1320312b1..a2357d6723 100644 --- a/src/Faker/Generator.php +++ b/src/Faker/Generator.php @@ -763,6 +763,8 @@ public function parse($string) * Get a random MIME type * * @example 'video/avi' + * + * @return string */ public function mimeType() { @@ -773,6 +775,8 @@ public function mimeType() * Get a random file extension (without a dot) * * @example avi + * + * @return string */ public function fileExtension() { @@ -781,6 +785,8 @@ public function fileExtension() /** * Get a full path to a new real file on the system. + * + * @return string */ public function filePath() { diff --git a/src/Faker/Provider/Image.php b/src/Faker/Provider/Image.php index e787142178..fd2f25bdf8 100644 --- a/src/Faker/Provider/Image.php +++ b/src/Faker/Provider/Image.php @@ -55,7 +55,8 @@ public static function imageUrl( trigger_deprecation( 'fakerphp/faker', '1.20', - 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', + '%s is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', + __CLASS__, ); // Validate image format @@ -119,7 +120,8 @@ public static function image( trigger_deprecation( 'fakerphp/faker', '1.20', - 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', + '%s is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', + __CLASS__, ); $dir = null === $dir ? sys_get_temp_dir() : $dir; // GNU/Linux / OS X / Windows compatible @@ -173,7 +175,8 @@ public static function getFormats(): array trigger_deprecation( 'fakerphp/faker', '1.20', - 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', + '%s is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', + __CLASS__, ); return array_keys(static::getFormatConstants()); @@ -184,7 +187,8 @@ public static function getFormatConstants(): array trigger_deprecation( 'fakerphp/faker', '1.20', - 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', + '%s is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', + __CLASS__, ); return [ diff --git a/src/Faker/Provider/Miscellaneous.php b/src/Faker/Provider/Miscellaneous.php index 354f67bb3a..7581c0f9fd 100644 --- a/src/Faker/Provider/Miscellaneous.php +++ b/src/Faker/Provider/Miscellaneous.php @@ -202,30 +202,27 @@ class Miscellaneous extends Base /** * @see https://en.wikipedia.org/wiki/ISO_4217 - * On date of 2023-01-01 - * - * With the following exceptions: - * SVC has been replaced by the USD in 2001: https://en.wikipedia.org/wiki/Salvadoran_col%C3%B3n - * ZWL has been suspended since 2009: https://en.wikipedia.org/wiki/Zimbabwean_dollar - * HRK has been replaced by EUR since 2023: https://en.wikipedia.org/wiki/Croatian_kuna + * On date of 2024-12-05 */ protected static $currencyCode = [ 'AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', - 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', - 'BSD', 'BTN', 'BWP', 'BYN', 'BZD', 'CAD', 'CDF', 'CHF', 'CLP', 'CNY', - 'COP', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', - 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GHS', 'GIP', - 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HTG', 'HUF', 'IDR', 'ILS', - 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', - 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', - 'LSL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRU', - 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', - 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', - 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', - 'SGD', 'SHP', 'SLL', 'SOS', 'SRD', 'SSP', 'STN', 'SYP', 'SZL', 'THB', - 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', - 'USD', 'UYU', 'UZS', 'VES', 'VND', 'VUV', 'WST', 'XAF', 'XCD', 'XOF', - 'XPF', 'YER', 'ZAR', 'ZMW', + 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BOV', + 'BRL', 'BSD', 'BTN', 'BWP', 'BYN', 'BZD', 'CAD', 'CDF', 'CHE', 'CHF', + 'CHW', 'CLF', 'CLP', 'CNY', 'COP', 'COU', 'CRC', 'CUC', 'CUP', 'CVE', + 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', + 'FKP', 'GBP', 'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', + 'HNL', 'HTG', 'HUF', 'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', + 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', + 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LYD', 'MAD', 'MDL', 'MGA', + 'MKD', 'MMK', 'MNT', 'MOP', 'MRU', 'MUR', 'MVR', 'MWK', 'MXN', 'MXV', + 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', + 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', + 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLE', 'SOS', + 'SRD', 'SSP', 'STN', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', + 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'USN', 'UYI', + 'UYU', 'UYW', 'UZS', 'VED', 'VES', 'VND', 'VUV', 'WST', 'XAF', 'XAG', + 'XAU', 'XBA', 'XBB', 'XBC', 'XBD', 'XCD', 'XDR', 'XOF', 'XPD', 'XPF', + 'XPT', 'XSU', 'XTS', 'XUA', 'XXX', 'YER', 'ZAR', 'ZMW', 'ZWG', ]; /** diff --git a/src/Faker/Provider/it_IT/PhoneNumber.php b/src/Faker/Provider/it_IT/PhoneNumber.php index b9727a66c9..dc3d769beb 100644 --- a/src/Faker/Provider/it_IT/PhoneNumber.php +++ b/src/Faker/Provider/it_IT/PhoneNumber.php @@ -4,18 +4,35 @@ class PhoneNumber extends \Faker\Provider\PhoneNumber { + /** + * @see https://en.wikipedia.org/wiki/Telephone_numbers_in_Italy + */ protected static $formats = [ - '+## ### ## ## ####', - '+## ## #######', - '+## ## ########', - '+## ### #######', - '+## ### ########', - '+## #### #######', - '+## #### ########', - // According to http://it.wikipedia.org/wiki/Prefisso_telefonico#Elenco_degli_indicativi_in_Italia.2C_a_San_Marino_e_nel_Vaticano - '0## ### ####', - '+39 0## ### ###', - '3## ### ###', - '+39 3## ### ###', + // Landline numbers + '0%# ### ###', + '0%# ### ####', + '02 #### ###', // Milan + '02 #### ####', + '06 #### ###', // Rome + '06 #### ####', + + // Mobile numbers + '3%# ### ####', + + // International formats + '+39 0%# ### ###', + '+39 0%# ### ####', + '+39 02 #### ###', + '+39 02 #### ####', + '+39 06 #### ###', + '+39 06 #### ####', + '+39 3%# ### ####', + ]; + + protected static $e164Formats = [ + '+390%#######', + '+390%########', + '+393%#######', + '+393%########', ]; } diff --git a/src/Faker/Provider/it_IT/PhoneNumberTest.php b/src/Faker/Provider/it_IT/PhoneNumberTest.php new file mode 100644 index 0000000000..0b4e9149a2 --- /dev/null +++ b/src/Faker/Provider/it_IT/PhoneNumberTest.php @@ -0,0 +1,30 @@ +faker->phoneNumber(); + self::assertMatchesRegularExpression('/^(((\+39 )?((3[1-9]\d)|(0[1-9]\d{0,1})) \d{3,4} \d{3,4})|((\+39)?(0|3)[1-9]\d{7,9}))$/', $number); + } + } + + public function testE164PhoneNumberFormat(): void + { + for ($i = 0; $i < 10; ++$i) { + $number = $this->faker->e164PhoneNumber(); + self::assertMatchesRegularExpression('/^\+39(0|3)[1-9]\d{7,9}$/', $number); + } + } + + protected function getProviders(): iterable + { + yield new PhoneNumber($this->faker); + } +}