mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 01:57:13 +00:00
Improved attribute handling with types and Attribute support (#1567)
* Add `AllowDynamicProperties` Attribute to cooperate with php8.2 deprecation
* lint snapshot
* Fix collection attribute typing
* Update CHANGELOG.md
* Update CHANGELOG.md
* Update CHANGELOG.md
* Update composer.json
* Fix collectino with template types WIP
* Add `AllowDynamicProperties` Attribute to cooperate with php8.2 deprecation
* Fix collection attribute typing
* Update CHANGELOG.md
* Update CHANGELOG.md
* Update composer.json
* composer fix-style
* Fix tests
* Fix tests
* composer fix-style
* Fix collectino with complex template types{
* Delete phpactor
* Install from scrumble repo
* Implemented correct attribute handling
* composer fix-style
* Revert "Install from scrumble repo"
This reverts commit 3f1057adb6.
* Re-add barryvdh links
* Revert "Update composer.json"
This reverts commit 98252fe740.
* Fix pivot test
* Correct CHANGELOG.md with attribute merge request
* More clear PhpDocTypeParser filename and clarified directory according to PSR12
---------
Co-authored-by: GeoSot <[email protected]>
Co-authored-by: laravel-ide-helper <[email protected]>
Co-authored-by: Luukdewaaier <[email protected]>
Co-authored-by: Luuk de Weijer <[email protected]>
This commit is contained in:
co-authored by
GeoSot
laravel-ide-helper
Luukdewaaier
Luuk de Weijer
parent
6338abb2d7
commit
c6509b658f
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\Models;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\CollectionModel;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\NonModel;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Collection as IntCollection;
|
||||
|
||||
class WithCollection extends Model
|
||||
{
|
||||
/**
|
||||
* @return Collection<int, string>
|
||||
*/
|
||||
public function getCollectionAttribute(): Collection
|
||||
{
|
||||
return new Collection();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection
|
||||
*/
|
||||
public function getCollectionWithoutTemplateAttribute(): Collection
|
||||
{
|
||||
return new Collection();
|
||||
}
|
||||
|
||||
public function getCollectionWithoutDocBlockAttribute(): Collection
|
||||
{
|
||||
return new Collection();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<int, NonModel>
|
||||
*/
|
||||
public function getCollectionWithNonModelTemplateAttribute(): Collection
|
||||
{
|
||||
return new Collection();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<Collection, CollectionModel<IntCollection, CollectionModel<int, NonModel>>>
|
||||
*/
|
||||
public function getCollectionWithNestedTemplateAttribute(): Collection
|
||||
{
|
||||
return new Collection();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels;
|
||||
|
||||
class CollectionModel
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels;
|
||||
|
||||
class NonModel
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
public function test(): void
|
||||
{
|
||||
$command = $this->app->make(ModelsCommand::class);
|
||||
|
||||
$tester = $this->runCommand($command, [
|
||||
'--write-mixin' => true,
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\Models;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\CollectionModel;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\NonModel;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Collection as IntCollection;
|
||||
|
||||
/**
|
||||
* @mixin IdeHelperWithCollection
|
||||
*/
|
||||
class WithCollection extends Model
|
||||
{
|
||||
/**
|
||||
* @return Collection<int, string>
|
||||
*/
|
||||
public function getCollectionAttribute(): Collection
|
||||
{
|
||||
return new Collection();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection
|
||||
*/
|
||||
public function getCollectionWithoutTemplateAttribute(): Collection
|
||||
{
|
||||
return new Collection();
|
||||
}
|
||||
|
||||
public function getCollectionWithoutDocBlockAttribute(): Collection
|
||||
{
|
||||
return new Collection();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<int, NonModel>
|
||||
*/
|
||||
public function getCollectionWithNonModelTemplateAttribute(): Collection
|
||||
{
|
||||
return new Collection();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<Collection, CollectionModel<IntCollection, CollectionModel<int, NonModel>>>
|
||||
*/
|
||||
public function getCollectionWithNestedTemplateAttribute(): Collection
|
||||
{
|
||||
return new Collection();
|
||||
}
|
||||
}
|
||||
<?php
|
||||
|
||||
// @formatter:off
|
||||
// phpcs:ignoreFile
|
||||
/**
|
||||
* A helper file for your Eloquent Models
|
||||
* Copy the phpDocs from this file to the correct Model,
|
||||
* And remove them from this file, to prevent double declarations.
|
||||
*
|
||||
* @author Barry vd. Heuvel <[email protected]>
|
||||
*/
|
||||
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\Models{
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @property-read \Illuminate\Support\Collection<int, string> $collection
|
||||
* @property-read \Illuminate\Support\Collection<\Illuminate\Support\Collection, \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\CollectionModel<\Illuminate\Support\Collection, \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\CollectionModel<int, \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\NonModel>>> $collection_with_nested_template
|
||||
* @property-read \Illuminate\Support\Collection<int, \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateMixinCollection\NonModels\NonModel> $collection_with_non_model_template
|
||||
* @property-read \Illuminate\Support\Collection $collection_without_doc_block
|
||||
* @property-read \Illuminate\Support\Collection $collection_without_template
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WithCollection newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WithCollection newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WithCollection query()
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
#[\AllowDynamicProperties]
|
||||
class IdeHelperWithCollection {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user