2013-02-28 18 views
5

Czy ktoś wie, czy PHPStorm ma wbudowane wsparcie dla autouzupełniania pomocnika widoku lub możliwość napisania wtyczki dla niego. Nie chcę używać definicji inline var za to jak to byłoby kłopotliwe zrobić, jeśli używam dużo widzenia pomocnikówAutouzupełnianie dla widoków ZF2 pomocników w PhpStorm

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

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

Jeśli używam definicji var będzie skończyć jako coś takiego, ale to naprawdę zaśmiecać mój widok:

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

W jaki sposób zadeklarowano 'inlineScript()' i/lub 'translate()'? Może po prostu nie mają odpowiednich PHPDocs? – LazyOne

+1

@LazyOne, są dynamicznie tworzone za pomocą magicznej metody '__call' :) –

+2

Coś jak https://github.com/zendframework/zf2/blob/release-2.1.3/library/Zend/Mvc/Controller/AbstractController. php # L31-L42 może zostać zastosowany do PHPRenderer ... Wtedy wpiszemy hint '/ * @var $ this \ Zend \ View \ Renderer \ PhpRenderer * /'. To może potencjalnie zadziałać – Ocramius

Odpowiedz

11

UWAGA jestem delegowania mój sposób omówiony w komentarzach jak odpowiedź.

Aby typehint nieistniejących metod, składnia jest następująca:

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

To pozwala nam korzystać mają typehint dla metody url na dowolnej zmiennej uznanej za MyClass:

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

Potrzebujesz takiej "fałszywej" klasy, a następnie uruchamiasz skrypty widoku:

/* @var $this \MyFakeClass */ 

To da ci wskazówki typu na temat $this w twoim skrypcie widoku. Idealnie można otworzyć żądanie pobrania w odniesieniu do https://github.com/zendframework/zf2 z czymś podobnym do https://github.com/zendframework/zf2/pull/3438

+0

Mam utworzyć [PR] (https://github.com/zendframework/zf2/pull/3924) –

+0

Jak działa ta pomoc dla pomocników zdefiniowanych przez użytkownika? Nie można edytować programu AbstractController, aby pomoc zdefiniowana przez użytkownika nie była jeszcze znana. –

+0

@QuolonelQuestions zawsze możesz podklasę, jeśli warto – Ocramius