netbean에 정규 변수에 대한 유형 힌트를 줄 수 있는 방법이 있는지 궁금해서 인텔리센스가 이를 포착할 수 있습니다.클래스 속성, 함수 매개 변수, 반환 유형 등에 대해 수행할 수 있지만 일반 변수에 대해 수행할 방법을 찾을 수 없습니다.이것은 다른 오브젝트 타입(서비스 로케이터 등)을 반환할 수 있는 메서드가 있는 경우에 매우 도움이 됩니다.
예를 들어 다음과 같습니다.
/**
* @var Some_Service $someService
*/ $someService = ServiceLocator::locate('someService');
나중에 $someService를 사용하는 경우 netbeans는 Some_Service 클래스에 정의된 사용 가능한 모든 메서드를 제공합니다.
질문에 대한 답변
한 줄만 있으면 됩니다.
/* @var $varName Type_Name */
NetBeans PHP 블로그에서 다음 기사를 참조하십시오.https://blogs.oracle.com/netbeansphp/entry/defining_a_variable_type_in
주의: 적어도 버전 8.2에서는 중요한 점은 다음과 같습니다.
- 1개의 아스타리스크(
/*
대신/**
).- 변수 이름 뒤에 유형 배치
- 타이프 힌트 전후에는 아무것도 없습니다(공백은 제외합니다만, 코멘트가 1 행에 없는 경우는, 그마저도 사용할 수 없습니다.
오래된 질문인 것은 알지만, Eclipse/Zend Studio에 대해서도 비슷한 답변을 찾고 있었고, 이것으로 해결되었습니다.
**이 스타일은 개폐가 한 줄에 있어야 하는데…
/* @var $varName Type_Name */
다른 형식 없음…
/**
* @var $varName Type_Name
*/
아니면…
// @var $varName Type_Name
효과가 있는 것 같았습니다.그게 도움이 됐으면 좋겠어요.
그 성가신 마법 변수들을 기록하려는 거야?(그랬습니다.이 질문은 현재 구글에서 가장 높은 결과를 얻고 있습니다.누군가에게 도움이 되었으면 좋겠다!)
그@property
태그를 사용하여 매직 php 변수를 문서화할 수 있습니다.__get()
그리고.__set()
태그는 클래스 정의 바로 앞에 있는 매뉴얼에서 사용해야 합니다.
/**
* Class Contact
* @property string $firstName
* @property string $lastName
*/ class Contact extends Model {
...
이 표기법은 Netbeans 8.1 및 PhpStorm 2016.1에서 테스트된 자동 완료를 트리거합니다.
이 버그 리포트에 의하면, NetBeans 9 로 구문이 변경됩니다.
/* @var $variable VarType */
// vdoc1 (legacy syntax) /** @var VarType $variable */
// vdoc (new syntax)
또한, 당신이 추가 할 수 있다는 것을 언급할 가치가 있다.[]
오브젝트 배열을 나타내는 클래스 이름:
/* @var $foos Foo[] */ $foos = // ...
foreach ($foos as $foo) {
// $foo will be hinted as Foo here }
그리고 잊지 마세요use
스테이트먼트(예:use Foo;
netbeans 8.0.2에서는 vdoc 템플릿에 다음과 같은 기능이 있습니다.
/* @var $variable type */
그러나 Netbeans는 이를 인식하지 못하고 개체에 대한 올바른 자동 완성 목록을 제공하지 않습니다.대신 변수 선언 직전에 다음과 같이 사용합니다.
/** @var objectType $varName */
vdoc 템플릿의 재고, 특히 PDO 또는 PDOStatement 객체로 사용되는 클래스 변수에 대해서는 그다지 유용하지 않습니다.
제가 사용하는 솔루션 중 하나는 툴 / 옵션 / 에디터 / 코드 템플릿(PHP를 언어로서 선택)에 들어가 새로운 템플릿을 추가하는 것입니다.나는 힌트라고 불렀다.그런 다음 확장 텍스트에서 다음 템플릿을 사용합니다.
/** @var ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} $$${VARIABLE variableFromNextAssignmentName default="variable"} */