Sto usando PHP Storm come IDE, ma credo che altri IDE come Netbeans avranno lo stesso problema che spiegherò di seguito.Preservare le capacità di completamento automatico con Symfony2 Dipendenza iniezione
Quando si utilizza un framework come Symfony2, abbiamo aggiunto il meraviglioso mondo di Dependency Injection. Così gli oggetti possono semplicemente essere istanziati utilizzando il codice come il seguente frammento:
$myThingy = $this->get('some_cool_service');
Questo è molto utile, in quanto gli oggetti sono già configurati in precedenza. L'unico problema è che il completamento automatico si interrompe interamente in praticamente qualsiasi IDE PHP, poiché l'IDE non sa quale tipo restituisce il metodo get().
C'è un modo per preservare il completamento automatico? La creazione di un'estensione di Controller sarebbe la risposta? Ad esempio:
class MyController extends Controller {
/**
* @return \MyNamespace\CoolService
*/
public getSomeCoolService() {
return new CoolService();
}
}
e quindi per i controller dell'applicazione, specificare MyController come classe base anziché Controller?
Cosa ne pensi di utilizzare una classe Factory o altri metodi possibili?
Il problema è che non sa che è un oggetto o che non sa che è un oggetto di una classe specifica? Se è il primo, non puoi semplicemente lanciare $ myThingy come oggetto? '$ myThingy = (oggetto) $ this-> get ('some_cool_service');' – DaveRandom
Vero, ma anche il casting su un oggetto lascerà l'IDE senza tracce su quale sia il tipo di classe delle istanze, cioè ... ancora senza auto -completamento tristemente. :( –
Stesse cose che avevo: http://stackoverflow.com/questions/21936380/best-practise-including-code-completion-in-zf2, stesse soluzioni ma tutti hanno bisogno di lavoro extra – Gizzmo