Skip to content

Commit

Permalink
Add collection for somes PHP classes
Browse files Browse the repository at this point in the history
  • Loading branch information
steevanb committed Aug 26, 2024
1 parent 92fe23b commit bedf5b5
Show file tree
Hide file tree
Showing 60 changed files with 919 additions and 6 deletions.
52 changes: 47 additions & 5 deletions bin/dev/generate-php-collections.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@

require $rootPath . '/vendor/autoload.php';

$maker = new ObjectCollectionMaker();
$nullableMaker = new ObjectNullableCollectionMaker();
$collectionPath = $rootPath . '/src/ObjectCollection';
$collectionNamespace = 'Steevanb\\PhpCollection\\ObjectCollection';

$interfaces = [
'\\' . BackedEnum::class,
'\\' . Countable::class,
Expand All @@ -21,13 +26,50 @@
'\\' . UnitEnum::class
];

$maker = new ObjectCollectionMaker();
$nullableMaker = new ObjectNullableCollectionMaker();

foreach ($interfaces as $interface) {
echo 'Generate collection for ' . $interface . '.' . "\n";
$maker->make($interface, $rootPath . '/src/ObjectCollection', 'Steevanb\\PhpCollection\\ObjectCollection');
$maker->make($interface, $collectionPath, $collectionNamespace);

echo 'Generate nullable collection for ' . $interface . '.' . "\n";
$nullableMaker->make($interface, $rootPath . '/src/ObjectCollection', 'Steevanb\\PhpCollection\\ObjectCollection');
$nullableMaker->make($interface, $collectionPath, $collectionNamespace);
}

$classes = [
'\\' . DateInterval::class,
'\\' . DatePeriod::class,
'\\' . DateTime::class,
'\\' . DateTimeImmutable::class,
'\\' . DateTimeZone::class,
'\\' . Reflection::class,
'\\' . ReflectionAttribute::class,
'\\' . ReflectionClass::class,
'\\' . ReflectionClassConstant::class,
'\\' . ReflectionEnum::class,
'\\' . ReflectionEnumBackedCase::class,
'\\' . ReflectionEnumUnitCase::class,
'\\' . ReflectionExtension::class,
'\\' . ReflectionFiber::class,
'\\' . ReflectionFunction::class,
'\\' . ReflectionFunctionAbstract::class,
'\\' . ReflectionGenerator::class,
'\\' . ReflectionIntersectionType::class,
'\\' . ReflectionMethod::class,
'\\' . ReflectionNamedType::class,
'\\' . ReflectionObject::class,
'\\' . ReflectionParameter::class,
'\\' . ReflectionProperty::class,
'\\' . ReflectionReference::class,
'\\' . ReflectionType::class,
'\\' . ReflectionUnionType::class,
'\\' . SplFileInfo::class,
'\\' . SplFileObject::class,
'\\' . stdClass::class
];

foreach ($classes as $class) {
echo 'Generate collection for ' . $class . '.' . "\n";
$maker->make($class, $collectionPath, $collectionNamespace);

echo 'Generate nullable collection for ' . $class . '.' . "\n";
$nullableMaker->make($class, $collectionPath, $collectionNamespace);
}
61 changes: 60 additions & 1 deletion changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
- Add support for Symfony `7.1`
- Add `ObjectCollectionMaker` and `ObjectNullableCollectionMaker`
- Add `bin/dev/generate-php-collections` and `bin/dev/generate-php-collections.php`
- Add collections for PHP internal classes or interfaces, all in namespace `Steevanb\PhpCollection\ObjectCollection`:
- Add collections for some PHP internal interfaces, all in namespace `Steevanb\PhpCollection\ObjectCollection`:
- `BackedEnumCollection`
- `BackedEnumNullableCollection`
- `CountableCollection`
Expand All @@ -18,6 +18,65 @@
- `StringableNullableCollection`
- `UnitEnumCollection`
- `UnitEnumNullableCollection`
Add collections for some PHP internal classes, all in namespace `Steevanb\PhpCollection\ObjectCollection`:
- `DateIntervalCollection`
- `DateIntervalNullableCollection`
- `DatePeriodCollection`
- `DatePeriodNullableCollection`
- `DateTimeCollection`
- `DateTimeNullableCollection`
- `DateTimeImmutableCollection`
- `DateTimeImmutableNullableCollection`
- `DateTimeZoneCollection`
- `DateTimeZoneNullableCollection`
- `ReflectionCollection`
- `ReflectionNullableCollection`
- `ReflectionAttributeCollection`
- `ReflectionAttributeNullableCollection`
- `ReflectionClassCollection`
- `ReflectionClassNullableCollection`
- `ReflectionClassConstantCollection`
- `ReflectionClassConstantNullableCollection`
- `ReflectionEnumCollection`
- `ReflectionEnumNullableCollection`
- `ReflectionEnumBackedCaseCollection`
- `ReflectionEnumBackedCaseNullableCollection`
- `ReflectionEnumUnitCaseCollection`
- `ReflectionEnumUnitCaseNullableCollection`
- `ReflectionExtensionCollection`
- `ReflectionExtensionNullableCollection`
- `ReflectionFiberCollection`
- `ReflectionFiberNullableCollection`
- `ReflectionFunctionCollection`
- `ReflectionFunctionNullableCollection`
- `ReflectionFunctionAbstractCollection`
- `ReflectionFunctionAbstractNullableCollection`
- `ReflectionGeneratorCollection`
- `ReflectionGeneratorNullableCollection`
- `ReflectionIntersectionTypeCollection`
- `ReflectionIntersectionTypeNullableCollection`
- `ReflectionMethodCollection`
- `ReflectionMethodNullableCollection`
- `ReflectionNamedTypeCollection`
- `ReflectionNamedTypeNullableCollection`
- `ReflectionObjectCollection`
- `ReflectionObjectNullableCollection`
- `ReflectionParameterCollection`
- `ReflectionParameterNullableCollection`
- `ReflectionPropertyCollection`
- `ReflectionPropertyNullableCollection`
- `ReflectionReferenceCollection`
- `ReflectionReferenceNullableCollection`
- `ReflectionTypeCollection`
- `ReflectionTypeNullableCollection`
- `ReflectionUnionTypeCollection`
- `ReflectionUnionTypeNullableCollection`
- `SplFileInfoCollection`
- `SplFileInfoNullableCollection`
- `SplFileObjectCollection`
- `SplFileObjectNullableCollection`
- `StdClassCollection`
- `StdClassNullableCollection`

### [6.2.0](../../compare/6.1.0...6.2.0) - 2024-07-08

Expand Down
14 changes: 14 additions & 0 deletions src/ObjectCollection/DateIntervalCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectCollection<\DateInterval> */
class DateIntervalCollection extends AbstractObjectCollection
{
public static function getValueFqcn(): string
{
return \DateInterval::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/DateIntervalNullableCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectNullableCollection<\DateInterval|null> */
class DateIntervalNullableCollection extends AbstractObjectNullableCollection
{
public static function getValueFqcn(): string
{
return \DateInterval::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/DatePeriodCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectCollection<\DatePeriod> */
class DatePeriodCollection extends AbstractObjectCollection
{
public static function getValueFqcn(): string
{
return \DatePeriod::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/DatePeriodNullableCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectNullableCollection<\DatePeriod|null> */
class DatePeriodNullableCollection extends AbstractObjectNullableCollection
{
public static function getValueFqcn(): string
{
return \DatePeriod::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/DateTimeCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectCollection<\DateTime> */
class DateTimeCollection extends AbstractObjectCollection
{
public static function getValueFqcn(): string
{
return \DateTime::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/DateTimeImmutableCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectCollection<\DateTimeImmutable> */
class DateTimeImmutableCollection extends AbstractObjectCollection
{
public static function getValueFqcn(): string
{
return \DateTimeImmutable::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/DateTimeImmutableNullableCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectNullableCollection<\DateTimeImmutable|null> */
class DateTimeImmutableNullableCollection extends AbstractObjectNullableCollection
{
public static function getValueFqcn(): string
{
return \DateTimeImmutable::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/DateTimeNullableCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectNullableCollection<\DateTime|null> */
class DateTimeNullableCollection extends AbstractObjectNullableCollection
{
public static function getValueFqcn(): string
{
return \DateTime::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/DateTimeZoneCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectCollection<\DateTimeZone> */
class DateTimeZoneCollection extends AbstractObjectCollection
{
public static function getValueFqcn(): string
{
return \DateTimeZone::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/DateTimeZoneNullableCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectNullableCollection<\DateTimeZone|null> */
class DateTimeZoneNullableCollection extends AbstractObjectNullableCollection
{
public static function getValueFqcn(): string
{
return \DateTimeZone::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/ReflectionAttributeCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectCollection<\ReflectionAttribute<object>> */
class ReflectionAttributeCollection extends AbstractObjectCollection
{
public static function getValueFqcn(): string
{
return \ReflectionAttribute::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/ReflectionAttributeNullableCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectNullableCollection<\ReflectionAttribute<object>|null> */
class ReflectionAttributeNullableCollection extends AbstractObjectNullableCollection
{
public static function getValueFqcn(): string
{
return \ReflectionAttribute::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/ReflectionClassCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectCollection<\ReflectionClass<object>> */
class ReflectionClassCollection extends AbstractObjectCollection
{
public static function getValueFqcn(): string
{
return \ReflectionClass::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/ReflectionClassConstantCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectCollection<\ReflectionClassConstant> */
class ReflectionClassConstantCollection extends AbstractObjectCollection
{
public static function getValueFqcn(): string
{
return \ReflectionClassConstant::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/ReflectionClassConstantNullableCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectNullableCollection<\ReflectionClassConstant|null> */
class ReflectionClassConstantNullableCollection extends AbstractObjectNullableCollection
{
public static function getValueFqcn(): string
{
return \ReflectionClassConstant::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/ReflectionClassNullableCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectNullableCollection<\ReflectionClass<object>|null> */
class ReflectionClassNullableCollection extends AbstractObjectNullableCollection
{
public static function getValueFqcn(): string
{
return \ReflectionClass::class;
}
}
14 changes: 14 additions & 0 deletions src/ObjectCollection/ReflectionCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

declare(strict_types=1);

namespace Steevanb\PhpCollection\ObjectCollection;

/** @extends AbstractObjectCollection<\Reflection> */
class ReflectionCollection extends AbstractObjectCollection
{
public static function getValueFqcn(): string
{
return \Reflection::class;
}
}
Loading

0 comments on commit bedf5b5

Please sign in to comment.