2013-02-28 12 views
5

Qualcuno sa se PHPStorm ha un supporto integrato per il completamento automatico di view helper o la possibilità di scrivere un plug-in per esso. Non voglio utilizzare definizioni in linea var per questo come questo sarebbe ingombrante da fare se io uso un sacco di vista aiutantiCompletamento automatico per gli helper di visualizzazione ZF2 in PhpStorm

$this->inlineScript()-> //I want some autocomplete here. 

$this->translate('some translation')-> //Please give me autocompletion 

Se uso definizioni var andrà a finire come qualcosa di simile, ma sarà davvero ingombrare mio punto di vista:

/* @var $inlineScript \Zend\View\Helper\InlineScript */ 
$inlineScript = $this->inlineScript(); 
$inlineScript-> //Now I have autocompletion goodness 

/* @var $translate \Zend\I18n\View\Helper\Translate */ 
$translate = $this->translate(); 
$translate('some translation')-> //Now I have autocompletion goodness 
+0

Come vengono dichiarati 'inlineScript()' e/o 'translate()'? Forse semplicemente non hanno PHPDocs appropriati? – LazyOne

+1

@LazyOne, vengono creati dinamicamente tramite il metodo magico '__call' :) –

+2

Qualcosa come https://github.com/zendframework/zf2/blob/release-2.1.3/library/Zend/Mvc/Controller/AbstractController. php # L31-L42 può essere applicato a PHPRenderer ... Quindi si digiterà '/ * @var $ this \ Zend \ View \ Renderer \ PhpRenderer * /'. Potrebbe funzionare potenzialmente – Ocramius

risposta

11

NOTA sto postando il mio metodo discusso nei commenti come risposta.

Per typehint metodi non-esistenti, la sintassi è la seguente:

/** 
* @method \Zend\Mvc\Controller\Plugin\Url url(string $route = null, array $params = null) 
*/ 
class MyClass 
{ 
} 

Questo permette di utilizzare avere un typehint per il metodo url su qualsiasi variabile riconosciuta come MyClass:

/* @var $a \MyClass */ 
$a->// typehint! 

È necessaria una classe "falsa" e quindi avviare gli script di visualizzazione con:

/* @var $this \MyFakeClass */ 

Ciò fornirà suggerimenti tipo su $this all'interno dello script di visualizzazione. È possibile aprire idealmente una richiesta pull con https://github.com/zendframework/zf2 con qualcosa di simile a https://github.com/zendframework/zf2/pull/3438

+0

Ho creato un [PR] (https://github.com/zendframework/zf2/pull/3924) –

+0

Come funziona questo aiuto per gli helper della vista definiti dall'utente? Non è possibile modificare AbstractController in modo che gli helper definiti dall'utente siano ancora sconosciuti. –

+0

@QuolonelQuestions puoi sempre sottoclasse se ne vale la pena – Ocramius