Skip to content

Commit 324d10f

Browse files
committed
feat: add support for Laravel 12
1 parent 15b8c5f commit 324d10f

25 files changed

+192
-120
lines changed

.editorconfig

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ root = true
22

33
[*]
44
charset = utf-8
5+
end_of_line = lf
56
indent_size = 4
67
indent_style = space
7-
end_of_line = lf
88
insert_final_newline = true
99
trim_trailing_whitespace = true
1010

.gitattributes

+18-15
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
# Path-based git attributes
2-
# https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html
2+
# https://git-scm.com/docs/gitattributes
3+
* text=auto
34

45
# Ignore all test and documentation with "export-ignore".
5-
/.github export-ignore
6-
/.gitattributes export-ignore
7-
/.gitignore export-ignore
8-
/phpunit.xml.dist export-ignore
9-
/art export-ignore
10-
/docs export-ignore
11-
/tests export-ignore
12-
/.editorconfig export-ignore
13-
/.php_cs.dist.php export-ignore
14-
/psalm.xml export-ignore
15-
/psalm.xml.dist export-ignore
16-
/testbench.yaml export-ignore
17-
/UPGRADING.md export-ignore
18-
/phpstan.neon.dist export-ignore
6+
/.github export-ignore
7+
/.gitattributes export-ignore
8+
/.gitignore export-ignore
9+
/phpunit.xml.dist export-ignore
10+
/art export-ignore
11+
/docs export-ignore
12+
/tests export-ignore
13+
/.editorconfig export-ignore
14+
/.php_cs.dist.php export-ignore
15+
/psalm.xml export-ignore
16+
/psalm.xml.dist export-ignore
17+
/testbench.yaml export-ignore
18+
/UPGRADING.md export-ignore
19+
/phpstan.neon.dist export-ignore
1920
/phpstan-baseline.neon export-ignore
21+
/docker export-ignore
22+
/docker-compose.yml export-ignore

.github/workflows/dependabot-auto-merge.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313

1414
- name: Dependabot metadata
1515
id: metadata
16-
uses: dependabot/fetch-metadata@v1
16+
uses: dependabot/fetch-metadata@v2
1717
with:
1818
github-token: "${{ secrets.GITHUB_TOKEN }}"
1919

.github/workflows/phpstan.yml

-26
This file was deleted.

.github/workflows/static.yml

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: Static Analysis
2+
3+
on:
4+
push:
5+
paths:
6+
- '**.php'
7+
- 'phpstan.neon.dist'
8+
9+
jobs:
10+
phpstan:
11+
name: PHPStan
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Setup PHP
17+
uses: shivammathur/setup-php@v2
18+
with:
19+
php-version: '8.3'
20+
coverage: none
21+
22+
- name: Install composer dependencies
23+
uses: ramsey/composer-install@v3
24+
25+
- name: Run PHPStan
26+
run: composer test:types
27+
28+
ecs:
29+
name: ECS
30+
31+
runs-on: ubuntu-latest
32+
33+
steps:
34+
- name: Checkout
35+
uses: actions/checkout@v4
36+
37+
- name: Setup PHP
38+
uses: shivammathur/setup-php@v2
39+
with:
40+
php-version: '8.3'
41+
coverage: none
42+
43+
- name: Install Dependencies
44+
run: composer update --prefer-dist --no-interaction --no-progress --ansi
45+
46+
- name: Run ECS
47+
run: composer test:style
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,28 @@
1-
name: run-tests
1+
name: Tests
22

33
on:
44
push:
5-
branches: [main,empty,review]
5+
branches: [main]
66
pull_request:
7-
branches: [main,empty,review]
7+
branches: [main]
88

99
jobs:
1010
test:
1111
runs-on: ${{ matrix.os }}
12-
env:
13-
PREVENT_OUTPUT: true
1412
strategy:
1513
fail-fast: true
1614
matrix:
17-
os: [ubuntu-latest, windows-latest]
18-
php: [8.2, 8.3]
19-
laravel: [10.*, 11.*]
15+
os: [ubuntu-latest]
16+
php: [8.4, 8.3]
17+
laravel: [12.*, 11.*]
2018
stability: [prefer-lowest, prefer-stable]
2119
include:
22-
- laravel: 10.*
23-
testbench: 8.*
20+
- laravel: 12.*
21+
testbench: 10.*
2422
- laravel: 11.*
2523
testbench: 9.*
2624

27-
name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }}
25+
name: PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }}
2826

2927
steps:
3028
- name: Checkout code
@@ -34,7 +32,6 @@ jobs:
3432
uses: shivammathur/setup-php@v2
3533
with:
3634
php-version: ${{ matrix.php }}
37-
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo
3835
coverage: none
3936

4037
- name: Setup problem matchers
@@ -44,8 +41,8 @@ jobs:
4441
4542
- name: Install dependencies
4643
run: |
47-
composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update
48-
composer update --${{ matrix.stability }} --prefer-dist --no-interaction
44+
composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update --ansi
45+
composer update --${{ matrix.stability }} --prefer-dist --no-interaction --ansi
4946
5047
- name: Execute tests
5148
run: composer test:unit

.gitignore

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
.idea
1+
/.idea
2+
/build
3+
/vendor
4+
/.php_cs.cache
5+
/composer.lock
6+
/phpunit.xml
7+
/phpstan.neon
28
.php_cs
39
.php_cs.cache
410
.phpunit.cache
5-
build
6-
composer.lock
11+
.php-cs-fixer.cache
712
coverage
813
docs
9-
phpunit.xml
10-
phpstan.neon
11-
testbench.yaml
12-
vendor
1314
node_modules
14-
.php-cs-fixer.cache
15+
testbench.yaml

composer.json

+8-8
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,17 @@
1717
],
1818
"require": {
1919
"php": "^8.2",
20-
"illuminate/contracts": "^10.0 || ^11.0",
21-
"spatie/laravel-package-tools": "^1.16"
20+
"illuminate/contracts": "^11.0 || ^12.0",
21+
"spatie/laravel-package-tools": "^1.19"
2222
},
2323
"require-dev": {
2424
"guzzlehttp/guzzle": "^7.8",
25-
"nunomaduro/collision": "^7.0 || ^8.1",
26-
"larastan/larastan": "^2.6",
27-
"orchestra/testbench": "^8.0 || ^9.0",
28-
"pestphp/pest": "^2.33",
29-
"pestphp/pest-plugin-laravel": "^2.0",
30-
"worksome/coding-style": "^2.8"
25+
"larastan/larastan": "^3.1",
26+
"nunomaduro/collision": "^7.10 || ^8.1.1",
27+
"orchestra/testbench": "^9.12 || ^10.1",
28+
"pestphp/pest": "^3.7",
29+
"pestphp/pest-plugin-laravel": "^3.1",
30+
"worksome/coding-style": "^3.2"
3131
},
3232
"autoload": {
3333
"psr-4": {

docker-compose.yml

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
services:
2+
php:
3+
build: ./docker
4+
volumes:
5+
- .:/var/www/html
6+
environment:
7+
- XDEBUG_MODE=${XDEBUG_MODE:-off}
8+
- XDEBUG_CONFIG=${XDEBUG_CONFIG:-client_host=host.docker.internal}
9+
composer:
10+
build: ./docker
11+
entrypoint: ["composer"]
12+
volumes:
13+
- .:/var/www/html

docker/Dockerfile

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM php:8.3-cli-alpine
2+
3+
RUN apk add --no-cache $PHPIZE_DEPS linux-headers
4+
RUN pecl install xdebug
5+
RUN docker-php-ext-enable xdebug
6+
7+
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
8+
9+
WORKDIR /var/www/html
10+
11+
ENTRYPOINT ["php"]

phpstan-baseline.neon

+30-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,44 @@
11
parameters:
22
ignoreErrors:
33
-
4-
message: "#^Unable to resolve the template type TKey in call to function collect$#"
4+
message: '#^Parameter \#1 \$name of method Worksome\\CompanyInfo\\CompanyInfo\:\:lookupName\(\) expects string, array\|string\|true given\.$#'
5+
identifier: argument.type
6+
count: 1
7+
path: src/Commands/CompanyInfoLookupCommand.php
8+
9+
-
10+
message: '#^Parameter \#1 \$number of method Worksome\\CompanyInfo\\CompanyInfo\:\:lookupNumber\(\) expects string, array\|string\|true given\.$#'
11+
identifier: argument.type
12+
count: 1
13+
path: src/Commands/CompanyInfoLookupCommand.php
14+
15+
-
16+
message: '#^Strict comparison using \!\=\= between non\-empty\-string and false will always evaluate to true\.$#'
17+
identifier: notIdentical.alwaysTrue
18+
count: 1
19+
path: src/Commands/CompanyInfoLookupCommand.php
20+
21+
-
22+
message: '#^Unable to resolve the template type TKey in call to function collect$#'
23+
identifier: argument.templateType
524
count: 1
625
path: src/CompanyInfo.php
726

827
-
9-
message: "#^Unable to resolve the template type TValue in call to function collect$#"
28+
message: '#^Unable to resolve the template type TValue in call to function collect$#'
29+
identifier: argument.templateType
1030
count: 1
1131
path: src/CompanyInfo.php
1232

1333
-
14-
message: "#^Worksome\\\\CompanyInfo\\\\Facades\\\\CompanyInfo facade should not be used\\.$#"
34+
message: '#^Cannot call method instance\(\) on Illuminate\\Contracts\\Foundation\\Application\|null\.$#'
35+
identifier: method.nonObject
36+
count: 1
37+
path: src/Facades/CompanyInfo.php
38+
39+
-
40+
message: '#^Worksome\\CompanyInfo\\Facades\\CompanyInfo facade should not be used\.$#'
41+
identifier: larastanStrictRules.noFacadeRule
1542
count: 1
1643
path: src/Facades/CompanyInfo.php
1744

phpstan.neon.dist

+6
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,9 @@ parameters:
1111
checkModelProperties: true
1212
parallel:
1313
processTimeout: 300.0
14+
15+
ignoreErrors:
16+
-
17+
identifier: larastan.noEnvCallsOutsideOfConfig
18+
path: config
19+
reportUnmatched: false

phpunit.xml.dist

+1-7
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,8 @@
77
cacheDirectory=".phpunit.cache"
88
>
99
<testsuites>
10-
<testsuite name="Worksome Test Suite">
10+
<testsuite name="Test Suite">
1111
<directory>tests</directory>
1212
</testsuite>
1313
</testsuites>
14-
<php>
15-
<env name="COMPANY_INFO_CVRAPI_USER_AGENT" value=""/>
16-
<env name="COMPANY_INFO_GAZETTE_KEY" value=""/>
17-
<env name="COMPANY_INFO_VIRK_USER_ID" value=""/>
18-
<env name="COMPANY_INFO_VIRK_PASSWORD" value=""/>
19-
</php>
2014
</phpunit>

src/Commands/CompanyInfoLookupCommand.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function handle(CompanyInfo $service): int
5050
*
5151
* @param array|null $companies Array of companies.
5252
*/
53-
private function displayJson(?array $companies): void
53+
private function displayJson(array|null $companies): void
5454
{
5555
$json = json_encode($companies, self::JSON_OPTIONS);
5656

@@ -64,7 +64,7 @@ private function displayJson(?array $companies): void
6464
*
6565
* @param array|null $companies Array of companies.
6666
*/
67-
private function displayTable(?array $companies): void
67+
private function displayTable(array|null $companies): void
6868
{
6969
$companies = collect($companies)->map(function ($company) {
7070
return [

src/CompanyInfo.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public function fake(array $lookup, array $response = []): void
3838
*
3939
* @throws InvalidCountryException If given country is not supported.
4040
*/
41-
public function lookupName(string $name, string $country = ''): ?array
41+
public function lookupName(string $name, string $country = ''): array|null
4242
{
4343
$country = empty($country) ? $this->config['default-country'] : $country;
4444

@@ -59,7 +59,7 @@ public function lookupName(string $name, string $country = ''): ?array
5959
*
6060
* @throws InvalidCountryException If given country is not supported.
6161
*/
62-
public function lookupNumber(string $number, string $country): ?array
62+
public function lookupNumber(string $number, string $country): array|null
6363
{
6464
$country = empty($country) ? $this->config['default-country'] : $country;
6565

src/Concerns/FakeResponse.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
trait FakeResponse
1010
{
1111
/** @var array<CompanyInfo>|null $fakeResponse Faked response. */
12-
private ?array $fakeResponse = null;
12+
private array|null $fakeResponse = null;
1313

1414
/**
1515
* Set faked response.

src/Contracts/CompanyInfoProvider.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
interface CompanyInfoProvider
88
{
9-
public function lookupName(string $name, string $country): ?array;
9+
public function lookupName(string $name, string $country): array|null;
1010

11-
public function lookupNumber(string $number, string $country): ?array;
11+
public function lookupNumber(string $number, string $country): array|null;
1212

1313
public function setFakeResponse(array $response): void;
1414
}

0 commit comments

Comments
 (0)