From d734f27a3c08f3d00f1166533ad7f8714c9c5219 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Sun, 7 Jun 2020 16:48:05 +0200 Subject: [PATCH 1/3] Add accessors for shortName and substitutedHoliday --- src/Yasumi/Filters/AbstractFilter.php | 4 ++-- src/Yasumi/Holiday.php | 10 ++++++++++ src/Yasumi/Provider/AbstractProvider.php | 6 +++--- src/Yasumi/Provider/SouthKorea.php | 2 +- src/Yasumi/SubstituteHoliday.php | 14 ++++++++++++-- tests/Base/SubstituteHolidayTest.php | 4 ++-- tests/Base/TypographyTest.php | 2 +- tests/Ukraine/SubstitutedHolidayTest.php | 2 +- 8 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/Yasumi/Filters/AbstractFilter.php b/src/Yasumi/Filters/AbstractFilter.php index 747913458..6d9979a49 100644 --- a/src/Yasumi/Filters/AbstractFilter.php +++ b/src/Yasumi/Filters/AbstractFilter.php @@ -35,10 +35,10 @@ public function count(): int { $names = \array_map(static function ($holiday) { if ($holiday instanceof SubstituteHoliday) { - return $holiday->substitutedHoliday->shortName; + return $holiday->getSubstitutedHoliday()->getShortName(); } - return $holiday->shortName; + return $holiday->getShortName(); }, \iterator_to_array($this)); return \count(\array_unique($names)); diff --git a/src/Yasumi/Holiday.php b/src/Yasumi/Holiday.php index af3a846f7..16961ac85 100755 --- a/src/Yasumi/Holiday.php +++ b/src/Yasumi/Holiday.php @@ -138,6 +138,16 @@ public function __construct( parent::__construct($date->format('Y-m-d'), $date->getTimezone()); } + /** + * Returns the short name for this holiday. + * + * @return string the short name, e.g. "newYearsDay". + */ + public function getShortName(): string + { + return $this->shortName; + } + /** * Returns what type this holiday is. * diff --git a/src/Yasumi/Provider/AbstractProvider.php b/src/Yasumi/Provider/AbstractProvider.php index 5cddd4e42..f7a57a8eb 100755 --- a/src/Yasumi/Provider/AbstractProvider.php +++ b/src/Yasumi/Provider/AbstractProvider.php @@ -158,7 +158,7 @@ public function addHoliday(Holiday $holiday): void $holiday->mergeGlobalTranslations($this->globalTranslations); } - $this->holidays[$holiday->shortName] = $holiday; + $this->holidays[$holiday->getShortName()] = $holiday; \uasort($this->holidays, [__CLASS__, 'compareDates']); } @@ -315,10 +315,10 @@ public function count(): int { $names = \array_map(static function ($holiday) { if ($holiday instanceof SubstituteHoliday) { - return $holiday->substitutedHoliday->shortName; + return $holiday->getSubstitutedHoliday()->getShortName(); } - return $holiday->shortName; + return $holiday->getShortName(); }, $this->getHolidays()); return \count(\array_unique($names)); diff --git a/src/Yasumi/Provider/SouthKorea.php b/src/Yasumi/Provider/SouthKorea.php index 161a6be26..e10faa33b 100644 --- a/src/Yasumi/Provider/SouthKorea.php +++ b/src/Yasumi/Provider/SouthKorea.php @@ -484,7 +484,7 @@ public function calculateSubstituteHolidays(): void foreach ($holidays as $shortName => $holiday) { // Get list of holiday dates except this $holidayDates = \array_map(static function ($holiday) use ($shortName) { - return $holiday->shortName === $shortName ? false : (string)$holiday; + return $holiday->getShortName() === $shortName ? false : (string)$holiday; }, $holidays); // Only process accepted holidays and conditions diff --git a/src/Yasumi/SubstituteHoliday.php b/src/Yasumi/SubstituteHoliday.php index 9321c8493..517e3b3ca 100755 --- a/src/Yasumi/SubstituteHoliday.php +++ b/src/Yasumi/SubstituteHoliday.php @@ -66,7 +66,7 @@ public function __construct( ) { $this->substitutedHoliday = $substitutedHoliday; - $shortName = 'substituteHoliday:' . $substitutedHoliday->shortName; + $shortName = 'substituteHoliday:' . $substitutedHoliday->getShortName(); if ($date == $substitutedHoliday) { throw new \InvalidArgumentException('Date must differ from the substituted holiday'); @@ -76,6 +76,16 @@ public function __construct( parent::__construct($shortName, $names, $date, $displayLocale, $type); } + /** + * Returns the holiday being substituted. + * + * @return Holiday the holiday being substituted. + */ + public function getSubstitutedHoliday(): Holiday + { + return $this->substitutedHoliday; + } + /** * Returns the localized name of this holiday * @@ -95,7 +105,7 @@ public function getName($locales = null): string { $name = parent::getName(); - if ($name === $this->shortName) { + if ($name === $this->getShortName()) { foreach ($this->getLocales($locales) as $locales) { $pattern = $this->substituteHolidayTranslations[$locales] ?? null; if ($pattern) { diff --git a/tests/Base/SubstituteHolidayTest.php b/tests/Base/SubstituteHolidayTest.php index a9e1f34f8..cd1003503 100644 --- a/tests/Base/SubstituteHolidayTest.php +++ b/tests/Base/SubstituteHolidayTest.php @@ -67,8 +67,8 @@ public function testConstructor(): void $holiday = new Holiday('testHoliday', [], new DateTime('2019-01-01'), 'en_US', Holiday::TYPE_BANK); $substitute = new SubstituteHoliday($holiday, [], new DateTime('2019-01-02'), 'en_US', Holiday::TYPE_SEASON); - $this->assertSame($holiday, $substitute->substitutedHoliday); - $this->assertEquals('substituteHoliday:testHoliday', $substitute->shortName); + $this->assertSame($holiday, $substitute->getSubstitutedHoliday()); + $this->assertEquals('substituteHoliday:testHoliday', $substitute->getShortName()); $this->assertEquals(Holiday::TYPE_SEASON, $substitute->getType()); $this->assertEquals(new DateTime('2019-01-02'), $substitute); } diff --git a/tests/Base/TypographyTest.php b/tests/Base/TypographyTest.php index 6944fcd49..6472363f9 100644 --- a/tests/Base/TypographyTest.php +++ b/tests/Base/TypographyTest.php @@ -59,7 +59,7 @@ public function translationProvider(): array foreach ($provider->getHolidays() as $holiday) { foreach ($holiday->translations as $locale => $name) { - $tests[$name] = [$name, $class, $holiday->shortName, $locale]; + $tests[$name] = [$name, $class, $holiday->getShortName(), $locale]; } } } diff --git a/tests/Ukraine/SubstitutedHolidayTest.php b/tests/Ukraine/SubstitutedHolidayTest.php index 582825e82..5fa7c5f94 100644 --- a/tests/Ukraine/SubstitutedHolidayTest.php +++ b/tests/Ukraine/SubstitutedHolidayTest.php @@ -87,7 +87,7 @@ public function assertHolidayWithSubstitution( $this->assertTrue($holidays->isHoliday($holidayOfficial)); $this->assertEquals(Holiday::TYPE_OFFICIAL, $holidayOfficial->getType()); - $holidaySubstitution = $holidays->getHoliday('substituteHoliday:' . $holidayOfficial->shortName); + $holidaySubstitution = $holidays->getHoliday('substituteHoliday:' . $holidayOfficial->getShortName()); if ($expectedSubstitution === null) { // without substitution $this->assertNull($holidaySubstitution); From bc4d753e57f833903eb1e3ed3fe0db8d7b312e07 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Sun, 7 Jun 2020 16:54:19 +0200 Subject: [PATCH 2/3] Deprecate direct access --- src/Yasumi/Holiday.php | 2 ++ src/Yasumi/SubstituteHoliday.php | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/Yasumi/Holiday.php b/src/Yasumi/Holiday.php index 16961ac85..9f082dc49 100755 --- a/src/Yasumi/Holiday.php +++ b/src/Yasumi/Holiday.php @@ -67,6 +67,8 @@ class Holiday extends DateTime implements JsonSerializable /** * @var string short name (internal name) of this holiday + * @deprecated public access to this property is deprecated in favor of getShortName() + * @see getShortName() */ public $shortName; diff --git a/src/Yasumi/SubstituteHoliday.php b/src/Yasumi/SubstituteHoliday.php index 517e3b3ca..fb7427525 100755 --- a/src/Yasumi/SubstituteHoliday.php +++ b/src/Yasumi/SubstituteHoliday.php @@ -28,6 +28,8 @@ class SubstituteHoliday extends Holiday { /** * @var Holiday + * @deprecated public access to this property is deprecated in favor of getSubstitutedHoliday() + * @see getSubstitutedHoliday() */ public $substitutedHoliday; From c35a02030857263438e77d657758c89c5a4daefb Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Mon, 8 Jun 2020 13:48:09 +0200 Subject: [PATCH 3/3] Changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 58692b633..dc76ebb99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/) and this - Added American English spelling for Labour Day [\#216](https://github.com/azuyalabs/yasumi/issues/216) - Added French translation for Second Christmas Day [\#188](https://github.com/azuyalabs/yasumi/pull/188) ([Arkounay](https://github.com/Arkounay)) +- Added accessor methods Holiday::getShortName() and SubstituteHoliday::getSubstitutedHoliday() [\#220](https://github.com/azuyalabs/yasumi/pull/220) ([c960657](https://github.com/c960657)) - Added missing return (correct) and parameter types in various methods. ### Changed @@ -44,6 +45,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/) and this - Fixed compound conditions that are always true by simplifying the condition steps. +### Deprecated +- Deprecated direct access to public properties Holiday::$shortName and SubstituteHoliday::$substitutedHoliday in favor of accessor methods [\#220](https://github.com/azuyalabs/yasumi/pull/220) ([c960657](https://github.com/c960657)) + ### Removed - PHP 7.1 Support, as it has reached its end of life. - Removed the assertion of the instance type in some functions as it is already defined by the return type.