Skip to content

Commit 93bdb02

Browse files
Pushing latest stuff
1 parent b9362d3 commit 93bdb02

File tree

80 files changed

+7103
-16105
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+7103
-16105
lines changed

composer.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,19 @@
77
"phpstan/phpstan-php-parser": "^1.0",
88
"phpstan/phpstan": "^1.2"
99
},
10+
"autoload": {
11+
"psr-4": {
12+
"Flarum\\PHPStan\\": "src/"
13+
}
14+
},
1015
"extra": {
1116
"phpstan": {
1217
"includes": [
1318
"extension.neon"
1419
]
20+
},
21+
"branch-alias": {
22+
"dev-master": "1.0.x-dev"
1523
}
1624
}
1725
}

extension.neon

Lines changed: 253 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,256 @@ parameters:
3636
excludePaths:
3737
- *.blade.php
3838
checkGenericClassInNonGenericObjectType: false
39+
checkModelProperties: false
40+
databaseMigrationsPath: []
41+
42+
parametersSchema:
43+
databaseMigrationsPath: listOf(string())
44+
checkModelProperties: bool()
45+
46+
services:
47+
-
48+
class: Flarum\PHPStan\Methods\RelationForwardsCallsExtension
49+
tags:
50+
- phpstan.broker.methodsClassReflectionExtension
51+
52+
-
53+
class: Flarum\PHPStan\Methods\ModelForwardsCallsExtension
54+
tags:
55+
- phpstan.broker.methodsClassReflectionExtension
56+
57+
-
58+
class: Flarum\PHPStan\Methods\EloquentBuilderForwardsCallsExtension
59+
tags:
60+
- phpstan.broker.methodsClassReflectionExtension
61+
62+
-
63+
class: Flarum\PHPStan\Methods\HigherOrderTapProxyExtension
64+
tags:
65+
- phpstan.broker.methodsClassReflectionExtension
66+
67+
-
68+
class: Flarum\PHPStan\Methods\HigherOrderCollectionProxyExtension
69+
tags:
70+
- phpstan.broker.methodsClassReflectionExtension
71+
72+
-
73+
class: Flarum\PHPStan\Methods\StorageMethodsClassReflectionExtension
74+
tags:
75+
- phpstan.broker.methodsClassReflectionExtension
76+
77+
-
78+
class: Flarum\PHPStan\Methods\Extension
79+
tags:
80+
- phpstan.broker.methodsClassReflectionExtension
81+
-
82+
class: Flarum\PHPStan\Methods\ModelFactoryMethodsClassReflectionExtension
83+
tags:
84+
- phpstan.broker.methodsClassReflectionExtension
85+
86+
-
87+
class: Flarum\PHPStan\Properties\ModelAccessorExtension
88+
tags:
89+
- phpstan.broker.propertiesClassReflectionExtension
90+
91+
-
92+
class: Flarum\PHPStan\Properties\ModelPropertyExtension
93+
tags:
94+
- phpstan.broker.propertiesClassReflectionExtension
95+
96+
-
97+
class: Flarum\PHPStan\Properties\HigherOrderCollectionProxyPropertyExtension
98+
tags:
99+
- phpstan.broker.propertiesClassReflectionExtension
100+
101+
-
102+
class: Flarum\PHPStan\Types\RelationDynamicMethodReturnTypeExtension
103+
tags:
104+
- phpstan.broker.dynamicMethodReturnTypeExtension
105+
106+
-
107+
class: Flarum\PHPStan\Types\ModelRelationsDynamicMethodReturnTypeExtension
108+
tags:
109+
- phpstan.broker.dynamicMethodReturnTypeExtension
110+
111+
-
112+
class: Flarum\PHPStan\ReturnTypes\HigherOrderTapProxyExtension
113+
tags:
114+
- phpstan.broker.dynamicMethodReturnTypeExtension
115+
-
116+
class: Flarum\PHPStan\ReturnTypes\ContainerArrayAccessDynamicMethodReturnTypeExtension
117+
tags:
118+
- phpstan.broker.dynamicMethodReturnTypeExtension
119+
arguments:
120+
className: Illuminate\Contracts\Container\Container
121+
-
122+
class: Flarum\PHPStan\ReturnTypes\ContainerArrayAccessDynamicMethodReturnTypeExtension
123+
tags:
124+
- phpstan.broker.dynamicMethodReturnTypeExtension
125+
arguments:
126+
className: Illuminate\Container\Container
127+
-
128+
class: Flarum\PHPStan\ReturnTypes\ContainerArrayAccessDynamicMethodReturnTypeExtension
129+
tags:
130+
- phpstan.broker.dynamicMethodReturnTypeExtension
131+
arguments:
132+
className: Illuminate\Foundation\Application
133+
-
134+
class: Flarum\PHPStan\ReturnTypes\ContainerArrayAccessDynamicMethodReturnTypeExtension
135+
tags:
136+
- phpstan.broker.dynamicMethodReturnTypeExtension
137+
arguments:
138+
className: Illuminate\Contracts\Foundation\Application
139+
140+
-
141+
class: Flarum\PHPStan\Properties\ModelRelationsExtension
142+
tags:
143+
- phpstan.broker.propertiesClassReflectionExtension
144+
145+
-
146+
class: Flarum\PHPStan\ReturnTypes\ModelFactoryDynamicStaticMethodReturnTypeExtension
147+
tags:
148+
- phpstan.broker.dynamicStaticMethodReturnTypeExtension
149+
150+
-
151+
class: Flarum\PHPStan\ReturnTypes\ModelExtension
152+
tags:
153+
- phpstan.broker.dynamicStaticMethodReturnTypeExtension
154+
155+
-
156+
class: Flarum\PHPStan\ReturnTypes\RequestExtension
157+
tags:
158+
- phpstan.broker.dynamicMethodReturnTypeExtension
159+
160+
-
161+
class: Flarum\PHPStan\ReturnTypes\EloquentBuilderExtension
162+
tags:
163+
- phpstan.broker.dynamicMethodReturnTypeExtension
164+
165+
-
166+
class: Flarum\PHPStan\ReturnTypes\RelationFindExtension
167+
tags:
168+
- phpstan.broker.dynamicMethodReturnTypeExtension
169+
170+
-
171+
class: Flarum\PHPStan\ReturnTypes\RelationCollectionExtension
172+
tags:
173+
- phpstan.broker.dynamicMethodReturnTypeExtension
174+
175+
-
176+
class: Flarum\PHPStan\ReturnTypes\ModelFindExtension
177+
tags:
178+
- phpstan.broker.dynamicStaticMethodReturnTypeExtension
179+
180+
-
181+
class: Flarum\PHPStan\ReturnTypes\BuilderModelFindExtension
182+
tags:
183+
- phpstan.broker.dynamicMethodReturnTypeExtension
184+
185+
-
186+
class: Flarum\PHPStan\ReturnTypes\TestCaseExtension
187+
tags:
188+
- phpstan.broker.dynamicMethodReturnTypeExtension
189+
190+
-
191+
class: Flarum\PHPStan\ReturnTypes\CollectionMakeDynamicStaticMethodReturnTypeExtension
192+
tags:
193+
- phpstan.broker.dynamicStaticMethodReturnTypeExtension
194+
195+
-
196+
class: Flarum\PHPStan\Support\CollectionHelper
197+
198+
-
199+
class: Flarum\PHPStan\ReturnTypes\Helpers\CollectExtension
200+
tags:
201+
- phpstan.broker.dynamicFunctionReturnTypeExtension
202+
203+
-
204+
class: Flarum\PHPStan\ReturnTypes\Helpers\TransExtension
205+
tags:
206+
- phpstan.broker.dynamicFunctionReturnTypeExtension
207+
208+
-
209+
class: Flarum\PHPStan\ReturnTypes\Helpers\ValidatorExtension
210+
tags:
211+
- phpstan.broker.dynamicFunctionReturnTypeExtension
212+
213+
-
214+
class: Flarum\PHPStan\ReturnTypes\CollectionFilterDynamicReturnTypeExtension
215+
tags:
216+
- phpstan.broker.dynamicMethodReturnTypeExtension
217+
218+
-
219+
class: Flarum\PHPStan\Types\AbortIfFunctionTypeSpecifyingExtension
220+
tags:
221+
- phpstan.typeSpecifier.functionTypeSpecifyingExtension
222+
arguments:
223+
methodName: 'abort'
224+
negate: false
225+
226+
-
227+
class: Flarum\PHPStan\Types\AbortIfFunctionTypeSpecifyingExtension
228+
tags:
229+
- phpstan.typeSpecifier.functionTypeSpecifyingExtension
230+
arguments:
231+
methodName: 'abort'
232+
negate: true
233+
234+
-
235+
class: Flarum\PHPStan\Types\AbortIfFunctionTypeSpecifyingExtension
236+
tags:
237+
- phpstan.typeSpecifier.functionTypeSpecifyingExtension
238+
arguments:
239+
methodName: throw
240+
negate: false
241+
242+
-
243+
class: Flarum\PHPStan\Types\AbortIfFunctionTypeSpecifyingExtension
244+
tags:
245+
- phpstan.typeSpecifier.functionTypeSpecifyingExtension
246+
arguments:
247+
methodName: throw
248+
negate: true
249+
250+
-
251+
class: Flarum\PHPStan\ReturnTypes\Helpers\AppExtension
252+
tags:
253+
- phpstan.broker.dynamicFunctionReturnTypeExtension
254+
255+
-
256+
class: Flarum\PHPStan\ReturnTypes\Helpers\ValueExtension
257+
tags:
258+
- phpstan.broker.dynamicFunctionReturnTypeExtension
259+
260+
-
261+
class: Flarum\PHPStan\ReturnTypes\Helpers\TapExtension
262+
tags:
263+
- phpstan.broker.dynamicFunctionReturnTypeExtension
264+
265+
-
266+
class: Flarum\PHPStan\ReturnTypes\StorageDynamicStaticMethodReturnTypeExtension
267+
tags:
268+
- phpstan.broker.dynamicStaticMethodReturnTypeExtension
269+
270+
-
271+
class: Flarum\PHPStan\Types\GenericEloquentCollectionTypeNodeResolverExtension
272+
tags:
273+
- phpstan.phpDoc.typeNodeResolverExtension
274+
275+
-
276+
class: Flarum\PHPStan\Types\ViewStringTypeNodeResolverExtension
277+
tags:
278+
- phpstan.phpDoc.typeNodeResolverExtension
279+
-
280+
class: Flarum\PHPStan\Methods\BuilderHelper
281+
arguments:
282+
checkProperties: %checkModelProperties%
283+
-
284+
class: Flarum\PHPStan\Properties\MigrationHelper
285+
arguments:
286+
databaseMigrationPath: %databaseMigrationsPath%
287+
parser: @currentPhpVersionSimpleDirectParser
288+
-
289+
class: Flarum\PHPStan\Types\RelationParserHelper
290+
arguments:
291+
parser: @currentPhpVersionSimpleDirectParser

src/Concerns/HasContainer.php

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Flarum\PHPStan\Concerns;
6+
7+
use Illuminate\Container\Container;
8+
use Illuminate\Contracts\Container\BindingResolutionException;
9+
use Illuminate\Contracts\Container\Container as ContainerContract;
10+
use Psr\Container\NotFoundExceptionInterface;
11+
use ReflectionException;
12+
13+
/**
14+
* @internal
15+
*/
16+
trait HasContainer
17+
{
18+
/**
19+
* @var ?\Illuminate\Contracts\Container\Container
20+
*/
21+
protected $container;
22+
23+
/**
24+
* @param \Illuminate\Contracts\Container\Container $container
25+
* @return void
26+
*/
27+
public function setContainer(ContainerContract $container): void
28+
{
29+
$this->container = $container;
30+
}
31+
32+
/**
33+
* Returns the current broker.
34+
*
35+
* @return \Illuminate\Contracts\Container\Container
36+
*/
37+
public function getContainer(): ContainerContract
38+
{
39+
return $this->container ?? Container::getInstance();
40+
}
41+
42+
/**
43+
* Resolve the given type from the container.
44+
*
45+
* @param string $abstract
46+
* @return mixed
47+
*/
48+
public function resolve(string $abstract)
49+
{
50+
$concrete = null;
51+
52+
try {
53+
$concrete = $this->getContainer()
54+
->make($abstract);
55+
} catch (ReflectionException $exception) {
56+
// ..
57+
} catch (BindingResolutionException $exception) {
58+
// ..
59+
} catch (NotFoundExceptionInterface $exception) {
60+
// ..
61+
}
62+
63+
return $concrete;
64+
}
65+
}

src/Concerns/LoadsAuthModel.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Flarum\PHPStan\Concerns;
6+
7+
use Illuminate\Config\Repository as ConfigRepository;
8+
9+
trait LoadsAuthModel
10+
{
11+
/** @phpstan-return class-string|null */
12+
private function getAuthModel(ConfigRepository $config, ?string $guard = null): ?string
13+
{
14+
if (
15+
($guard === null && ! ($guard = $config->get('auth.defaults.guard'))) ||
16+
! ($provider = $config->get('auth.guards.'.$guard.'.provider')) ||
17+
! ($authModel = $config->get('auth.providers.'.$provider.'.model'))
18+
) {
19+
return null;
20+
}
21+
22+
return $authModel;
23+
}
24+
}

0 commit comments

Comments
 (0)