Laravel 매크로 정의시 $this 주위에 나오는 PhpStorm의 경고를 침묵시킵니다.
소개
Laravel의 여러 클래스에 준비되어 있는 매크로는 부족한 메소드를 서브 클래스를 만들지 않고 직접 추가하는 느낌으로 사용할 수 있어 매우 강력합니다.
실제로 실행하는 함수의 내용은 PHP의 클로저를 사용해 줍니다만, 런타임시에는 $this
를 그 클래스에 다시 묶고 있으므로, 보통 그 클래스의 메소드로 실시할 수 있는 것은 전부 할 수 있습니다. private/protected 메서드/속성에도 액세스할 수 있습니다.
그러나 PhpStorm는 다시 묶인 $this
를 잘 대우할 수 없기 때문에, 많은 경고가 있습니다. 예를 들어 이전 기사 "Eloquent에서 relation의 레코드의 유무만을 subquery로 취득하고 싶다"에서 정의한 매크로는 이런 느낌이 듭니다.
침묵시키는 법
여러가지 시험해 지금 사용하고 있는 방법을 소개합니다. 아이디어로서는 「 $this
의 변화를 지정할 수 없다면, 매크로 정의를 실시하는 클래스에 필요한 메소드/프로퍼티를 annotation을 구사해 살려버리면 된다」입니다.
@mixin
$this
가 다른 클래스인 것이 우선 문제이므로 @mixin
를 사용해 매크로를 정의하는 클래스를 받아들입니다.
/**
* ......
* @mixin Builder
* /
이제 public에 액세스할 수 있는 속성과 메서드는 ok입니다.
@property와 @method
그래도 private/protected 속성과 메서드에 대한 경고가 나옵니다.
이것을 침묵 시키려면 경고가 나오는 것에 대해 @property
또는 @method
를 추가하십시오.
/**
* ......
* @property \Illuminate\Database\Query\Builder $query
* @method parseWithRelations(array $relations)
* @method selectExists($query, $as)
*/
단점
@mixin
, @property
, @method
로 추가한 것은 원래의 클래스(이 경우는 AppServiceProvider
)에는 본래 존재하지 않지만, 보완 후보 등으로 나오게 되어 버립니다.
AppServiceProvider
를 호출하는 프로그램을 스스로 쓰는 일은 없기 때문에, 이 점에 대해서는 눈을 뜨고 있습니다.
결론
나가서는 안되는 경고가 많이 남은 상태라면, 정말로 문제가 있는 경고가 만약 있어도 묻혀 버려 좋지 않습니다. 꽤 무리 화려한 방법이지만 최대한 깨끗한 상태를 유지하는 것은 의미가 있다고 생각합니다.
Reference
이 문제에 관하여(Laravel 매크로 정의시 $this 주위에 나오는 PhpStorm의 경고를 침묵시킵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/crhg/items/45c0cf569944c3b62af7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
여러가지 시험해 지금 사용하고 있는 방법을 소개합니다. 아이디어로서는 「
$this
의 변화를 지정할 수 없다면, 매크로 정의를 실시하는 클래스에 필요한 메소드/프로퍼티를 annotation을 구사해 살려버리면 된다」입니다.@mixin
$this
가 다른 클래스인 것이 우선 문제이므로 @mixin
를 사용해 매크로를 정의하는 클래스를 받아들입니다./**
* ......
* @mixin Builder
* /
이제 public에 액세스할 수 있는 속성과 메서드는 ok입니다.
@property와 @method
그래도 private/protected 속성과 메서드에 대한 경고가 나옵니다.
이것을 침묵 시키려면 경고가 나오는 것에 대해 @property
또는 @method
를 추가하십시오.
/**
* ......
* @property \Illuminate\Database\Query\Builder $query
* @method parseWithRelations(array $relations)
* @method selectExists($query, $as)
*/
단점
@mixin
, @property
, @method
로 추가한 것은 원래의 클래스(이 경우는 AppServiceProvider
)에는 본래 존재하지 않지만, 보완 후보 등으로 나오게 되어 버립니다.
AppServiceProvider
를 호출하는 프로그램을 스스로 쓰는 일은 없기 때문에, 이 점에 대해서는 눈을 뜨고 있습니다.
결론
나가서는 안되는 경고가 많이 남은 상태라면, 정말로 문제가 있는 경고가 만약 있어도 묻혀 버려 좋지 않습니다. 꽤 무리 화려한 방법이지만 최대한 깨끗한 상태를 유지하는 것은 의미가 있다고 생각합니다.
Reference
이 문제에 관하여(Laravel 매크로 정의시 $this 주위에 나오는 PhpStorm의 경고를 침묵시킵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/crhg/items/45c0cf569944c3b62af7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
/**
* ......
* @property \Illuminate\Database\Query\Builder $query
* @method parseWithRelations(array $relations)
* @method selectExists($query, $as)
*/
@mixin
, @property
, @method
로 추가한 것은 원래의 클래스(이 경우는 AppServiceProvider
)에는 본래 존재하지 않지만, 보완 후보 등으로 나오게 되어 버립니다.AppServiceProvider
를 호출하는 프로그램을 스스로 쓰는 일은 없기 때문에, 이 점에 대해서는 눈을 뜨고 있습니다.결론
나가서는 안되는 경고가 많이 남은 상태라면, 정말로 문제가 있는 경고가 만약 있어도 묻혀 버려 좋지 않습니다. 꽤 무리 화려한 방법이지만 최대한 깨끗한 상태를 유지하는 것은 의미가 있다고 생각합니다.
Reference
이 문제에 관하여(Laravel 매크로 정의시 $this 주위에 나오는 PhpStorm의 경고를 침묵시킵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/crhg/items/45c0cf569944c3b62af7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Laravel 매크로 정의시 $this 주위에 나오는 PhpStorm의 경고를 침묵시킵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/crhg/items/45c0cf569944c3b62af7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)