Só estou curioso para saber se existe uma maneira no netbeans de dar dicas de tipo para variáveis regulares, para que o intellisense as pegue. Eu sei que você pode fazer isso para propriedades de classe, parâmetros de função, tipos de retorno, etc., mas não consigo descobrir como fazer isso para variáveis regulares. É algo que realmente ajudaria em situações onde você tem um método que pode retornar diferentes tipos de objetos (como um localizador de serviço).
ex algo como:
/**
* @var Some_Service $someService
*/
$someService = ServiceLocator::locate('someService');
Quando usar $ someService posteriormente, o netbeans fornecerá todos os métodos disponíveis definidos na classe Some_Service.
Respostas:
Uma única linha é tudo que você precisa:
/* @var $varName Type_Name */
Consulte este artigo no blog do NetBeans PHP: https://blogs.oracle.com/netbeansphp/entry/defining_a_variable_type_in
fonte
$this->obj = $serviceLocator->get('obj');
se eu usar,/* @var $obj Obj */
ele não funciona .../** @var Type_Name */
, veja este post ?vdoc
na linha acima a variável que vai documentar e clicar emTab
e isso funcionará como uma macro para criar automaticamente o bloco de documentos @johannes posts acima.Eu sei que esta é uma questão mais antiga, mas eu estava procurando uma resposta semelhante para Eclipse / Zend Studio e isso também resolveu.
** Observe, porém, que deve estar em uma única linha com a abertura e o fechamento explicitamente neste estilo ...
/* @var $varName Type_Name */
Nenhum outro formato se ...
/** * @var $varName Type_Name */
ou...
// @var $varName Type_Name
parecia funcionar em tudo. Espero que ajude alguém.
fonte
Você está procurando documentar essas variáveis mágicas incômodas ? (Sim; esta questão atualmente classifica o resultado principal para isso no Google. Espero que isso ajude alguém!)
A
@property
tag permite que você documente variáveis php mágicas - aquelas implementadas usando__get()
e__set()
. A tag deve ser usada na documentação imediatamente anterior à definição da classe:/** * Class Contact * @property string $firstName * @property string $lastName */ class Contact extends Model { ...
Esta notação aciona o autocomplete, testado no Netbeans 8.1 e PhpStorm 2016.1.
fonte
De acordo com este relatório de bug , a sintaxe mudará no NetBeans 9 :
/* @var $variable VarType */ // vdoc1 (legacy syntax) /** @var VarType $variable */ // vdoc (new syntax)
Além disso, vale a pena mencionar que você pode anexar
[]
a um nome de classe para indicar uma matriz de objetos:/* @var $foos Foo[] */ $foos = // ... foreach ($foos as $foo) { // $foo will be hinted as Foo here }
E não se esqueça de sua
use
declaração, por exemplouse Foo;
fonte
No netbeans 8.0.2, o modelo vdoc oferece isso:
/* @var $variable type */
O Netbeans não reconhecerá isso, entretanto, e não fornecerá a lista de preenchimento automático correta para seus objetos. Em vez disso, use isso, logo antes de sua declaração de variável:
/** @var objectType $varName */
Eu realmente não vi um grande uso para o modelo vdoc de estoque , especialmente para variáveis de classe que serão usadas como objetos PDO ou PDOStatement.
Uma solução que uso é ir em Ferramentas / Opções / Editor / Modelos de código (com PHP selecionado como sua linguagem) e adicionar um novo modelo. Eu chamei minha dica . Em seguida, em Texto Expandido, use o seguinte modelo:
/** @var ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} $$${VARIABLE variableFromNextAssignmentName default="variable"} */
fonte
Para o NetBeans IDE 8.2, a sintaxe é assim:
class foobar{ /** @var string $myvar: optional description here **/ protected static $myvar; }
Isso fornecerá as dicas de tipo adequadamente para variáveis estáticas, pelo menos.
fonte