[php] Netbeans (PHP)의 변수 유형 힌트

netbeans에 일반 변수에 대한 유형 힌트를 제공하는 방법이 있는지 궁금해서 intellisense가이를 선택합니다. 클래스 속성, 함수 매개 변수, 반환 유형 등에 대해 할 수 있다는 것을 알고 있지만 일반 변수에 대해 수행하는 방법을 알 수 없습니다. 서비스 로케이터와 같은 다른 객체 유형을 반환 할 수있는 메서드가있는 상황에서 실제로 도움이 될 것입니다.

예 :

/**
 * @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에서는; 핵심은 다음과 같습니다.

  • 단일 별표 ( /*대신 /**).
  • 변수 이름 뒤에 유형을 배치합니다.
  • 유형 힌트 앞뒤에 아무것도 없습니다 (공백 제외, 주석이 한 줄에 있지 않은 경우에도 허용되지 않음).


답변

나는 이것이 오래된 질문이라는 것을 알고 있지만 Eclipse / Zend Studio에 대한 유사한 답변을 찾고 있었고 이것도 해결되었습니다.

**이 스타일에서 명시 적으로 열기 및 닫기가있는 단일 행에 있어야합니다.

/* @var $varName Type_Name */

다른 형식 없음 …

/**
 * @var $varName Type_Name
 */

또는…

// @var $varName Type_Name

전혀 작동하는 것 같았습니다. 누군가에게 도움이되기를 바랍니다.


답변

성가신 마법 변수 를 문서화하고 싶습니까? (이 질문은 현재 Google에서 가장 높은 순위를 차지하고 있습니다. 도움이 되었기를 바랍니다.)

@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"} */


답변

NetBeans IDE 8.2 구문은 다음과 같습니다.

class foobar{
    /** @var string $myvar: optional description here **/
    protected static $myvar;
}

이것은 적어도 정적 변수에 대한 유형 힌트를 적절하게 제공합니다.


답변