2009-11-25 2 views
73

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

전 뭔가 :

/** 
* @var Some_Service $someService 
*/ 
$someService = ServiceLocator::locate('someService'); 

이후 $의 someService를 사용하는 경우, 넷빈즈는 클래스 Some_Service에 정의 된 모든 가능한 방법을 제공한다.

/* @var $varName Type_Name */ 

는 넷빈즈 PHP 블로그에서이 문서를 참조하십시오 : 하나의 라인이 전부입니다

+1

이것은 멤버 내에서 클래스 내에서 작동하지만 함수 또는 절차 코드에서이를 수행하는 방법을 알지 못합니다. 나는 모든 일반 십오 일에 작동해야 주석의이 유형으로 * PHP의 IDE에서 * 변수 타입 힌팅이 이름을 바꾸는 생각 것 –

+1

(넷빈즈, 이클립스, ...). – shadyyx

답변

158
+0

매력처럼 작동합니다. 링크를 이용해 주셔서 감사합니다. –

+10

여기서 중요한 것은/** 대신에 별표/*가 하나있는 것 같습니다. 버전 8.0 이상. 감사. – Cypher

+1

우리가 객체 속성을 위해 vdoc을 사용해야한다면 전혀 작동하지 않는 것처럼 보입니다. 즉,'$ this-> obj = $ serviceLocator-> get ('obj');'/ * @var $ obj Obj * /'작동하지 않습니다 ... – shadyyx

21

을,하지만 난에 대한 비슷한 대답을 찾고 있었다 이클립스/젠드 스튜디오와 이것도 해결.

** 참고하지만이 ... 오프닝이 스타일로 명시 적으로 닫는 한 줄에 있어야한다는

/* @var $varName Type_Name */ 

없음 형식 ... 여부

/** 
* @var $varName Type_Name 
*/ 

또는 ...

// @var $varName Type_Name 

전혀 작동하지 않는 것 같습니다. 희망은 누군가를 돕습니다. 넷빈즈 8.0.2에서

+0

나열된 이중 슬래시 방법 사용 las NetBeans 7.2에서 나에게 효과가 없었습니다. – David

+1

@David 잘 읽지는 못했지만 처음에는 그만한 작품이라고 말했습니다. 다른 두 가지 모두 유효한 주석이긴하지만 둘 중 어느 것도 유형 힌트 시스템으로 작동하지 않습니다. 적어도 이클립스는 NetBeans에 대한 확신이 없습니다. – oucil

+0

죄송합니다. 답을 잘못 읽었습니다. 내 잘못. – David

2

vdoc 템플릿은 당신에게주는이 :

/* @var $variable type */ 

넷빈즈 그러나이 인식하지 않으며, 당신에게 당신의 개체에 대한 올바른 자동 완성 목록을 제공하지 않습니다. 대신 당신의 변수 선언하기 전에이 사용

/** @var objectType $varName */ 

정말 특히 PDO 또는 PDOStatement 객체로 사용하려는 클래스 변수, 주식 vdoc 템플릿에 대한 좋은 사용을 보지 못했어요.

내가 사용하는 한 가지 해결책은 실제로 도구/옵션/편집기/코드 템플릿 (PHP가 언어로 선택된 상태)에 들어가서 새 템플릿을 추가하는 것입니다. 내가 전화 했어 힌트.

/** @var ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} $$${VARIABLE variableFromNextAssignmentName default="variable"} */ 
+0

흠, NB 8.0.2가 있고 저에게는 다른 방향입니다./* @var $ 변수 유형 * /은 잘 동작합니다. 템플릿에 패치를 사용하려고했습니다. 그러나 그것은 작동하지 않았다. – userfuser

+0

내가 먼저 answe을 게시 할 때 넷빈즈의 내 사본과 함께 무슨 일이 있었 정확히 모르겠지만, 지금은 8.2을 사용하고 있습니다. /* @var $ 변수 varName VARTYPE */ 작품 잘. – Mike

5

당신이 그 성가신 마법 변수를 문서화하기 위해 찾고 계십니까 : 그리고 확장 된 텍스트에서 다음 템플릿을 사용? (내가 그랬어,이 질문은 현재 Google에서 나는이 사람을 도움이 희망을위한 최고 결과 중 하나입니다.!)

@property 태그는 마법 PHP 변수 문서화 할 수 있습니다 - __get()__set()를 사용하여 구현 사람들을.태그 즉시 클래스 정의를 앞의 문서에 사용되어야한다 :

/** 
* Class Contact 
* @property string $firstName 
* @property string $lastName 
*/ 
class Contact extends Model { 
    ... 

이 표기법은 넷빈즈 8.1 PhpStorm 2016.1 테스트, 자동 완성을 트리거합니다.

enter image description here

1

this bug report에 따르면, 구문 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;