소스에서 직접 PHPDOC를 완료하십시오
이 패키지는 IDE가 정확한 자동 완성을 제공 할 수있는 헬퍼 파일을 생성합니다. 생성은 프로젝트의 파일을 기반으로 수행되므로 항상 최신입니다.
3.x 브랜치는 Laravel 10 및 11을 지원합니다. 이전 버전의 경우 2.x 릴리스를 사용하십시오.
다음 명령을 사용하여 작곡가 로이 패키지가 필요합니다.
composer require --dev barryvdh/laravel-ide-helper
메모
버전이 교리/dbal과 충돌하는 경우 시도하십시오 : composer require --dev barryvdh/laravel-ide-helper --with-all-dependencies
이 패키지는 Laravels 패키지 자동 발견 메커니즘을 사용합니다. 즉, 생산에 DEV 종속성을 설치하지 않으면로드되지 않습니다.
어떤 이유로 든 수동으로 제어하려면 다음과 같습니다.
extra.laravel.dont-discover
, 예 composer.json
"extra" : {
"laravel" : {
"dont-discover" : [
" barryvdh/laravel-ide-helper "
]
}
}
config/app.php
의 providers
배열에 다음 클래스를 추가하십시오. Barryvdh LaravelIdeHelper IdeHelperServiceProvider ::class,
register()
메소드를 사용하여 AppServiceProvider
에 추가 할 수 있습니다. public function register ()
{
if ( $ this -> app -> isLocal ()) {
$ this -> app -> register ( Barryvdh LaravelIdeHelper IdeHelperServiceProvider ::class);
}
// ...
}
참고 : 개발 환경에서 구성을 캐싱하지 않으면이 패키지를 설치 한 후 문제가 발생할 수 있습니다.
php artisan cache:clear
빠른 소개/설명을 위해이 Laracasts 비디오를 확인하십시오!
php artisan ide-helper:generate
- Laravel Facades의 PHPDOC 세대php artisan ide-helper:models
- 모델 용 PHPDOCphp artisan ide-helper:meta
-PHPSTORM META 파일참고 : https://github.com/spectacles/codecomplice에 대해 Sublime Text에 대해 CodeCande가 필요합니다
이제 문서를 직접 재생할 수 있습니다 (향후 업데이트를 위해)
php artisan ide-helper:generate
참고 : bootstrap/compiled.php
먼저 지워야하므로 생성하기 전에 php artisan clear-compiled
실행하십시오.
이것은 autocomplete를 위해 IDE에 의해 추가로 구문 분석 될 것으로 예상되는 _ide_helper.php
파일을 생성합니다. 구성 filename
사용하여 이름을 변경할 수 있습니다.
종속성을 업데이트 할 때마다 composer.json
을 구성 할 수 있습니다.
"scripts" : {
"post-update-cmd" : [
"Illuminate\Foundation\ComposerScripts::postUpdate" ,
"@php artisan ide-helper:generate" ,
"@php artisan ide-helper:meta"
]
} ,
구성 파일을 게시하여 구현을 변경하거나 (예 : 특정 클래스에 대한 인터페이스) --helpers
에 대한 기본값을 설정할 수도 있습니다.
php artisan vendor:publish --provider= " BarryvdhLaravelIdeHelperIdeHelperServiceProvider " --tag=config
생성기는 실제 클래스를 식별하려고하지만 찾을 수없는 경우 구성 파일에서 정의 할 수 있습니다.
일부 클래스에는 작업 데이터베이스 연결이 필요합니다. 기본 작업 연결이없는 경우 일부 외관이 포함되지 않습니다. -M
옵션을 추가하여 메모리 인 SQLITE 드라이버를 사용할 수 있습니다.
앱에서 실시간 정면을 사용하는 경우 @mixin
주석을 사용하여 생성 된 파일에 포함되어 원래 클래스를 외관 아래에서 확장합니다.
참고 :이 기능은 storage/framework/cache
폴더에서 생성 된 실시간 정면 파일을 사용합니다. 해당 파일은 실시간 정면을 사용할 때 주문형으로 생성되므로 프레임 워크가 먼저 생성되지 않으면 헬퍼 파일에 포함되지 않습니다. 먼저 경로/명령/코드를 실행 한 다음 헬퍼 파일을 재생하면 이번에는 실시간 외관이 포함됩니다.
헬퍼 파일을 포함하도록 선택할 수 있습니다. 기본적으로 활성화되지는 않지만 --helpers (-H)
옵션으로 재정의 할 수 있습니다. Illuminate/Support/helpers.php
이미 설정되었지만 구성 파일에서 자신의 파일을 추가/제거 할 수 있습니다.
이 패키지는 매크로 및 Mixins 용 PHPDOC를 생성 할 수 있으며 _ide_helper.php
파일에 추가됩니다.
그러나 이것은 매크로를 선언 할 때 유형 힌트를 사용하는 경우에만 작동합니다.
Str :: macro ( ' concat ' , function ( string $ str1 , string $ str2 ) : string {
return $ str1 . $ str2 ;
});
속성을 직접 작성하지 않으려면 php artisan ide-helper:models
사용하여 테이블 열, 관계 및 게터/세터를 기반으로 PHPDOC를 생성 할 수 있습니다.
참고 :이 명령은 각 모델의 표를 내성하기 위해 작동하는 데이터베이스 연결이 필요합니다.
기본적으로 별도의 파일 ( _ide_helper_models.php
)을 덮어 쓰거나 쓰도록 요청받습니다. --write (-W)
옵션을 사용하여 모델 파일에 직접 주석을 작성하거나 --nowrite (-N)
로 쓰지 않도록 강제로 작성할 수 있습니다.
또는 --write-mixin (-M)
옵션을 사용하면 모델 파일에 Mixin 태그 만 추가하여 나머지는 ( _ide_helper_models.php
)를 작성합니다. 클래스 이름은 IDE 중복 성가심을 피하기 위해 모델과 다릅니다.
정보를 작성하기 전에 모델을 백업하십시오.
모델에 글을 쓰면 기존 주석을 유지하고 새로운 속성/방법 만 추가해야합니다. 변경된 속성/방법을 업데이트하지 않습니다.
--reset (-R)
옵션을 사용하면 기존의 전체 PHPDOC가 대체 된 의견을 포함하여 대체됩니다.
php artisan ide-helper:models " AppModelsPost "
/**
* AppModelsPost
*
* @property integer $id
* @property integer $author_id
* @property string $title
* @property string $text
* @property IlluminateSupportCarbon $created_at
* @property IlluminateSupportCarbon $updated_at
* @property-read User $author
* @property-read IlluminateDatabaseEloquentCollection|Comment[] $comments
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost newModelQuery()
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost newQuery()
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost query()
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost whereTitle($value)
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost forAuthors(User ...$authors)
* …
*/
--write-mixin (-M)
옵션으로
/**
* …
* @mixin IdeHelperPost
*/
기본적으로 app/models
의 모델이 스캔됩니다. 선택적인 인수는 어떤 모델 (앱/모델 외부)을 알려줍니다.
php artisan ide-helper:models " AppModelsPost " " AppModelsUser "
--dir
옵션 (기본 경로에서 상대)을 사용하여 다른 디렉토리를 스캔 할 수도 있습니다.
php artisan ide-helper:models --dir= " path/to/models " --dir= " app/src/Model "
구성 파일 ( php artisan vendor:publish
)을 게시하고 기본 디렉토리를 설정할 수 있습니다.
--ignore (-I)
옵션을 사용하여 모델을 무시할 수 있습니다
php artisan ide-helper:models --ignore= " AppModelsPost,AppModelsUser "
또는 ignored_models
config를 설정하여 무시할 수 있습니다
' ignored_models ' => [
App Post ::class,
Api User ::class
],
where*
방법 Eloquent는 귀하의 모델에서 where<Attribute>
(예 Post::whereTitle(…)
의 위치를 호출하고 이것을 eg Post::where('title', '=', '…')
로 자동으로 번역합니다.
어떤 이유로 어떤 이유로 생성 할 필요가없는 경우 (각 열마다 하나씩) config write_model_magic_where
통해이를 비활성화하고 false
로 설정할 수 있습니다.
*_count
속성 ::withCount
메소드를 사용하여 실제로로드하지 않고 관계의 결과를 계산할 수 있습니다. 그런 다음 해당 결과는 <columname>_count
컨벤션에 따라 속성에 배치됩니다.
기본적으로 이러한 속성은 PHPDOC에서 생성됩니다. config write_model_relation_count_properties
false
로 설정하여 끄십시오.
Laravel 9는 컬렉션을위한 문서 블록에 제네릭 주석을 도입했습니다. PHPStorm 2022.3 이상은 @property
내에서 제네릭 주석 및 @property-read
선언 Collection<User>
사용을 지원합니다 Collection|User[]
config use_generics_annotations
false
로 설정하여 비활성화 할 수 있습니다.
@comment
지원합니다 IDE를 더 잘 지원하기 위해 관계 및 게터/세터는 테이블 열과 같은 속성에 주석을 추가 할 수 있습니다. 따라서 사용자 정의 docblock @comment
사용됩니다.
class Users extends Model
{
/**
* @comment Get User's full name
*
* @return string
*/
public function getFullNameAttribute (): string
{
return $ this -> first_name . ' ' . $ this -> last_name ;
}
}
// => after generate models
/**
* AppModelsUsers
*
* @property-read string $full_name Get User's full name
* …
*/
웅변 모델에 대한 새로운 방법이 newEloquentBuilder
Reference라는 새로운 방법을 추가하여 모델 자체에서 로컬 스코프를 사용하는 대신 새로운 전용 클래스를 작성하는 지원을 추가 할 수 있습니다.
어떤 이유로 든 생성 할 필요가없는 경우 (각 열마다 하나씩) Config write_model_external_builder_methods
통해이를 비활성화하고 false
로 설정할 수 있습니다.
Laravel에 내장되지 않은 관계를 사용하는 경우 구성에 이름과 반환 클래스를 지정하여 적절한 생성을 얻을 수 있습니다.
' additional_relation_types ' => [
' externalHasMany ' => My Package externalHasMany::class
],
발견 된 관계는 일반적으로 관계 이름에 따라 반환 값을 생성합니다.
사용자 정의 관계 가이 기존 이름 지정 체계를 따르지 않으면 수동으로 리턴 유형을 정의 할 수 있습니다. 사용 가능한 옵션은 many
morphTo
입니다.
' additional_relation_return_types ' => [
' externalHasMultiple ' => ' many '
],
기본적으로 처리되지 않은 소스에서 모델에 대한 추가 정보가 필요한 경우 모델 후크를 사용하여 생성 프로세스에 연결하여 즉시 추가 정보를 추가 할 수 있습니다. ModelHookInterface
구현하는 클래스를 작성하고 구성에서 model_hooks
배열에 추가하십시오.
' model_hooks ' => [
MyCustomHook ::class,
],
run
방법은 모든 모델에 대해 생성 중에 호출되며 현재 실행중인 ModelsCommand
와 현재 Model
수신합니다.
class MyCustomHook implements ModelHookInterface
{
public function run ( ModelsCommand $ command , Model $ model ): void
{
if (! $ model instanceof MyModel ) {
return ;
}
$ command -> setProperty ( ' custom ' , ' string ' , true , false , ' My custom property ' );
$ command -> unsetMethod ( ' method ' );
$ command -> setMethod ( ' method ' , $ command -> getMethodType ( $ model , ' SomeClass ' ), [ ' $param ' ]);
}
}
/**
* MyModel
*
* @property integer $ id
* @property-read string $ custom
예를 들어 마이그레이션에서 유창한 방법에 대한 PHPDOC를 지원하는 경우
$ table -> string ( " somestring " )-> nullable ()-> index ();
공급 업체를 게시 한 후 config/ide-helper.php
파일의 include_fluent
행을 다음과 같이 변경하십시오.
' include_fluent ' => true ,
그런 다음 php artisan ide-helper:generate
, 이제 IDE에서 인식하는 모든 유창한 방법이 표시됩니다.
factory()->create()
및 factory()->make()
메소드가 올바른 모델 클래스를 반환하려면 config/ide-helper.php
파일에서 include_factory_builders
줄을 사용하여 사용자 정의 공장 빌더를 활성화 할 수 있습니다. . Laravel 8 또는 최신의 경우 더 이상 사용되지 않습니다.
' include_factory_builders ' => true ,
이를 위해서는 PHPStorm 메타 파일도 게시해야합니다 (아래 참조).
공장 디자인 패턴에 대한 지원을 추가하기 위해 Phpstorm 메타 파일을 생성 할 수 있습니다. Laravel의 경우, 이것은 Phpstorm이 IOC 컨테이너에서 어떤 종류의 개체를 해결하고 있는지 이해하도록 할 수 있음을 의미합니다. 예를 들어, events
IlluminateEventsDispatcher
Object를 반환하므로 Meta 파일을 사용하면 app('events')
호출 할 수 있으며 디스패처 메소드를 자동으로 완성합니다.
php artisan ide-helper:meta
app ( ' events ' )-> fire ();
App :: make ( ' events ' )-> fire ();
/** @var IlluminateFoundationApplication $app */
$ app -> make ( ' events ' )-> fire ();
// When the key is not found, it uses the argument as class name
app ( ' AppSomeClass ' );
// Also works with
app ( App SomeClass ::class);
참고 : phpstorm을 다시 시작하고
.phpstorm.meta.php
가 인덱싱되어 있는지 확인해야합니다.참고 : FatalException : 클래스를 찾을 수없는 경우 구성을 확인하십시오 (예 : S3을 구성하지 않은 경우 클라우드 드라이버로 S3을 제거하십시오. 사용하지 않을 때는 Redis ServiceProvider를 제거하십시오).
config meta_filename
을 통해 생성 된 파일 이름을 변경할 수 있습니다. 이는 PHPStorm의 디렉토리 지원을 활용하려는 경우에 유용 할 수 있습니다 .phpstorm.meta.php/
Laravel IDE Helper Generator는 MIT 라이센스에 따라 라이센스가 부여 된 오픈 소프트웨어입니다.