Skip to content

Commit 19a7791

Browse files
committed
Update for PHP 8 support
1 parent bac4f79 commit 19a7791

27 files changed

+68
-54
lines changed

.github/workflows/tests.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ jobs:
1616

1717
- name: Setup PHP
1818
uses: shivammathur/setup-php@v2
19-
with:
20-
php-version: '7.4'
2119

2220
- name: Validate composer.json and composer.lock
2321
run: composer validate

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
Change Log
22
==========
33

4-
2020-12-18
4+
2021-01-21
55
----------
66

7+
* require PHP 8
8+
* update to collection 5.0, domain 4.0
9+
10+
2020-12-18 - 2.2.0
11+
------------------
12+
713
* add bound parameter count check on relationships to prevent running queries without bound args
814

915
2020-10-22

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ active-record projects including GranadaORM (IdiORM), PHP ActiveRecord and other
4040

4141
## Requirements
4242

43-
* PHP 7.4+
43+
* PHP 8.0+
4444
* mb_string
4545
* doctrine/dbal
4646
* somnambulist/collection
@@ -192,6 +192,7 @@ somnambulist/collection project and must have `extract()` and `add()` methods.
192192
## More Reading
193193

194194
* [Upgrading from 1.X to 2.0](docs/upgrading_1.X_to_2.0.md)
195+
* [Upgrading from 2.X to 3.0](docs/upgrading_2.X_to_3.0.md)
195196
* [Setting up Symfony](docs/setup_symfony.md)
196197
* [Querying Data](docs/querying.md)
197198
* [Casting Attributes](docs/casting.md)

composer.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,21 @@
1010
}
1111
],
1212
"require": {
13-
"php": ">=7.4",
13+
"php": ">=8.0",
1414
"ext-json": "*",
1515
"doctrine/dbal": "~2.11",
1616
"pagerfanta/pagerfanta": "~2.4",
1717
"pragmarx/ia-str": "^7.0",
18-
"somnambulist/attribute-model": "~1.0",
19-
"somnambulist/collection": "~4.0"
18+
"somnambulist/attribute-model": "~2.0",
19+
"somnambulist/collection": "~5.0"
2020
},
2121
"require-dev": {
22-
"phpunit/phpunit": "~9",
22+
"phpunit/phpunit": "~9.5",
2323
"creof/doctrine2-spatial": "~1.2",
2424
"doctrine/doctrine-bundle": "~2.0",
2525
"doctrine/orm": "^2.7",
26-
"fzaninotto/faker": "~1.8",
27-
"somnambulist/domain": "~3.0",
26+
"fakerphp/faker": "^1.13",
27+
"somnambulist/domain": "~4.0",
2828
"symfony/dotenv": "^5.0",
2929
"symfony/framework-bundle": "^5.0",
3030
"symfony/messenger": "^5.0",

docs/upgrading_2.X_to_3.0.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
## Upgrading from 2.X to 3.0
3+
4+
The biggest change in 3.0 is the requirement for PHP 8. There are some minor type-hint related
5+
changes, however the main APIs are the same as 2.X.
6+
7+
In addition note the following:
8+
9+
* `somnambulist/domain` has been updated and is now namespaced `Somnambulist\Components\Domain`
10+
* `somnambulist/collection` has been updated and is now namespaced `Somnambulist\Components\Collection`

src/ConnectionManager.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function __construct(array $connections)
2222
$this->forAll($connections);
2323
}
2424

25-
public function forAll(array $connections)
25+
public function forAll(array $connections): void
2626
{
2727
foreach ($connections as $model => $connection) {
2828
$this->add($connection, $model);

src/Model.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
use IlluminateAgnostic\Str\Support\Str;
66
use JsonSerializable;
77
use LogicException;
8-
use Somnambulist\Collection\Contracts\Arrayable;
9-
use Somnambulist\Collection\Contracts\Collection;
10-
use Somnambulist\Collection\Contracts\Jsonable;
11-
use Somnambulist\Collection\MutableCollection;
128
use Somnambulist\Components\AttributeModel\AbstractModel;
9+
use Somnambulist\Components\Collection\Contracts\Arrayable;
10+
use Somnambulist\Components\Collection\Contracts\Collection;
11+
use Somnambulist\Components\Collection\Contracts\Jsonable;
12+
use Somnambulist\Components\Collection\MutableCollection;
1313
use Somnambulist\Components\ReadModels\Exceptions\EntityNotFoundException;
1414
use Somnambulist\Components\ReadModels\Relationships\AbstractRelationship;
1515
use Somnambulist\Components\ReadModels\Relationships\BelongsTo;

src/ModelBuilder.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
use InvalidArgumentException;
1010
use Pagerfanta\Pagerfanta;
1111
use RuntimeException;
12-
use Somnambulist\Collection\Contracts\Arrayable;
13-
use Somnambulist\Collection\Contracts\Collection;
14-
use Somnambulist\Collection\MutableCollection;
12+
use Somnambulist\Components\Collection\Contracts\Arrayable;
13+
use Somnambulist\Components\Collection\Contracts\Collection;
14+
use Somnambulist\Components\Collection\MutableCollection;
1515
use Somnambulist\Components\ReadModels\Contracts\Queryable;
1616
use Somnambulist\Components\ReadModels\Exceptions\EntityNotFoundException;
1717
use Somnambulist\Components\ReadModels\Exceptions\NoResultsException;
@@ -28,9 +28,9 @@
2828
use function is_callable;
2929
use function method_exists;
3030
use function sprintf;
31+
use function str_contains;
3132
use function str_replace;
3233
use function strlen;
33-
use function strpos;
3434
use function substr;
3535
use function ucfirst;
3636

@@ -277,7 +277,7 @@ public function with(...$relations): self
277277
private function eagerLoadRelationships(Collection $models): void
278278
{
279279
foreach ($this->eagerLoad as $name => $constraints) {
280-
if (false === strpos($name, '.')) {
280+
if (false === str_contains($name, '.')) {
281281
/** @var AbstractRelationship $load */
282282
$rel = $this->model->new()->getRelationship($name);
283283
$rel
@@ -546,7 +546,7 @@ public function orWhereNotIn(string $column, $values): self
546546
*
547547
* @return ModelBuilder
548548
*/
549-
public function whereColumn(string $column, string $operator, $value, string $andOr = 'and'): self
549+
public function whereColumn(string $column, string $operator, mixed $value, string $andOr = 'and'): self
550550
{
551551
$key = $this->createParameterPlaceholderKey($column);
552552
$method = $this->getAndOrWhereMethodName($andOr);
@@ -568,7 +568,7 @@ public function whereColumn(string $column, string $operator, $value, string $an
568568
*
569569
* @return ModelBuilder
570570
*/
571-
public function orWhereColumn(string $column, string $operator, $value): self
571+
public function orWhereColumn(string $column, string $operator, mixed $value): self
572572
{
573573
return $this->whereColumn($column, $operator, $value, 'or');
574574
}
@@ -621,7 +621,7 @@ public function orWhereNotNull(string $column): self
621621
*
622622
* @return ModelBuilder
623623
*/
624-
public function whereBetween(string $column, $start, $end, string $andOr = 'and', bool $not = false): self
624+
public function whereBetween(string $column, mixed $start, mixed $end, string $andOr = 'and', bool $not = false): self
625625
{
626626
$method = $this->getAndOrWhereMethodName($andOr);
627627
$expr = ($not ? 'NOT' : '') . ' BETWEEN';
@@ -635,17 +635,17 @@ public function whereBetween(string $column, $start, $end, string $andOr = 'and'
635635
return $this;
636636
}
637637

638-
public function whereNotBetween(string $column, $start, $end): self
638+
public function whereNotBetween(string $column, mixed $start, mixed $end): self
639639
{
640640
return $this->whereBetween($column, $start, $end, 'and', true);
641641
}
642642

643-
public function orWhereBetween(string $column, $start, $end): self
643+
public function orWhereBetween(string $column, mixed $start, mixed $end): self
644644
{
645645
return $this->whereBetween($column, $start, $end, 'or');
646646
}
647647

648-
public function orWhereNotBetween(string $column, $start, $end): self
648+
public function orWhereNotBetween(string $column, mixed $start, mixed $end): self
649649
{
650650
return $this->whereBetween($column, $start, $end, 'or', true);
651651
}

src/ModelExporter.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
use Closure;
66
use IlluminateAgnostic\Str\Support\Str;
7-
use Somnambulist\Collection\Contracts\Jsonable;
8-
use Somnambulist\Collection\MutableCollection as Collection;
7+
use Somnambulist\Components\Collection\Contracts\Jsonable;
8+
use Somnambulist\Components\Collection\MutableCollection as Collection;
99
use Somnambulist\Components\ReadModels\Exceptions\JsonEncodingException;
1010
use function count;
1111
use function explode;
@@ -130,7 +130,7 @@ private function extractAttributes(array $attributes): array
130130

131131
foreach ($attributes as $key => $value) {
132132
if ($this->shouldExtractAttribute($key)) {
133-
$key = Str::snake($this->getAttributeExtractionKey($key), '_');
133+
$key = Str::snake($this->getAttributeExtractionKey($key));
134134

135135
if (is_object($value)) {
136136
$attrs[$key] = $this->extractPropertiesFrom($value);

src/ModelIdentityMap.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public function registerAlias(Model $model, ?string $foreignKeyName = null): voi
6868
* @param string $target
6969
* @param mixed $targetId
7070
*/
71-
public function registerRelationship(string $source, $sourceId, string $target, $targetId): void
71+
public function registerRelationship(string $source, mixed $sourceId, string $target, mixed $targetId): void
7272
{
7373
$this->relationships[$source][(string)$sourceId][$target][(string)$targetId] = (string)$targetId;
7474
}

0 commit comments

Comments
 (0)